Podatkovni tip ENUM v MySQL je a predmet niza . Omogoča nam, da omejimo vrednost, izbrano s seznama dovoljenih vrednosti v specifikaciji stolpca v času ustvarjanja tabele. To je okrajšava za naštevanje , kar pomeni, da ima lahko vsak stolpec eno od navedenih možnih vrednosti. Uporablja se številčni indeksi (1, 2, 3 ...) za predstavitev vrednosti niza.
MySQL Podatkovni tip ENUM ima naslednje prednosti:
status git
- Kompaktno shranjevanje podatkov, kjer ima lahko stolpec omejen nabor določenih možnih vrednosti. Tu se vrednosti niza samodejno uporabijo kot številski indeks.
- Omogoča berljive poizvedbe in izpis, ker je mogoče številke znova prevesti v ustrezen niz.
- Sprejme lahko številne tipe podatkov, kot so celo število, plavajoča vejica, decimalno število in niz.
Sintaksa
Sledi sintaksa, uporabljena za definiranje podatkovnega tipa ENUM v stolpcu:
CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… );
V zgornji sintaksi smo definirali samo tri vrednosti ENUM, vendar jih je mogoče povečati glede na naše potrebe. Tu se moramo prepričati, da morajo biti vrednosti oštevilčenja vedno znotraj citiran nizovni literal .
MySQL nam omogoča, da definiramo podatkovni tip ENUM z naslednjimi atributi:
NI NULL: Privzeto je podatkovni tip ENUM NULL. Če ne želimo dovoliti vrednosti NULL, moramo med podajanjem stolpca ENUM uporabiti lastnost NOT NULL.
NIČ: Je sinonim za DEFAULT NULL, njegova vrednost indeksa pa je vedno NULL.
PRIVZETO: Če vrednost v stolpcu ni navedena, podatkovni tip ENUM vstavi privzeto vrednost. Z drugimi besedami, če stavek INSERT ne poda vrednosti za ta stolpec, bo vstavljena privzeta vrednost. Izraz DEFAULT ne dovoljuje vstavljanja funkcije. Podatkovni tip ENUM v My SQL vključuje DEFAULT vrednosti kot NULL ali prazen niz ('').
niz nizov c programiranje
Primer MySQL ENUM
Naj razumemo, kako podatkovni tip ENUM deluje v MySQL z naslednjo sliko. Tukaj bomo ustvarili tabelo z imenom ' srajce ', ki vsebuje tri stolpce: id, ime in velikost.
Stolpec velikosti uporablja podatkovni tip ENUM in ima majhne, srednje, velike in x-velike velikosti. MySQL te člane oštevilčenja preslika v številski indeks, kjer je majhen=1, srednji=2, velik=3 in x-velik=4. Izvedite naslednjo poizvedbo, da ustvarite tabelo:
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') );
Naprej, moramo vstavi vrednosti v tabelo. Med vstavljanjem se lahko vrednosti oštevilčenja vstavijo bodisi kot literal niza bodisi kot njegovi številski indeksi in oboje je enako. Izvedite naslednji stavek, da vstavite vrednosti v tabelo:
INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small');
Zdaj izvedite stavek SELECT, da vidite vstavljene vrednosti v tabelo:
mysql> SELECT * FROM shirts;
Naslednja slika vsebuje vse zgornje rezultate poizvedbe, ki vsebujejo oštevilčene vrednosti samo v nizovnih literalih:
Razvrščanje ENUM
MySQL razvrsti vrednosti oštevilčenja na podlagi njihovih numeričnih indeksov, ki so odvisni od vrstnega reda, v katerem smo vstavili podatke v specifikacijo stolpca. Na primer , če smo definirali oštevilčenje kot ENUM ('b', 'a', '', 'c'). Potem je b pred a, prazen niz pred c (neprazen niz), vrednost NULL pa pred drugimi vrednostmi.
Torej, če ne želimo dobiti nepričakovanega rezultata s podatkovnim tipom ENUM z uporabo klavzule ORDER BY, sledimo tem pravilom:
c programi
- Vrednosti oštevilčenja določite po abecednem vrstnem redu.
- Zagotoviti je treba, da je ime stolpca v leksikalnem vrstnem redu in ne v indeksni številki.
Naslednji primer bolj jasno pojasnjuje razvrščanje po številu. Torej, če želite pridobiti velikost srajc v določenem vrstnem redu, izvedite spodnjo izjavo:
mysql> SELECT * FROM shirts ORDER BY size DESC;
Ta poizvedba bo dala rezultat kot spodaj, kjer lahko vidimo, da je velikost srajc v padajočem vrstnem redu:
Omejitve podatkovnega tipa ENUM
Slabosti podatkovnega tipa ENUM v MySQL so naslednje:
1. Če želimo spremeniti vrednosti/člane oštevilčenja, lahko to storimo tako, da ponovno zgradimo celotno tabelo z ukazom ALTER TABLE. Prav tako drago porabi naše vire in čas.
metoda tostring v Javi
2. Ne moremo uporabiti izraza s členi naštevanja. Na primer, ta stavek CREATE se ne izvede, ker uporablja funkcijo CONCAT() za ustvarjanje članov oštevilčenja.
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') );
3. Uporabniške spremenljivke ne moremo uporabiti kot člana oštevilčenja. Vidi se v spodnjem primeru:
SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') );
4. Priporočljivo je, da številskih vrednosti ne uporabljamo kot člane oštevilčenja.
5. Zapleteno je pridobiti popoln oštevilčen seznam informacij, ker moramo dostopati do baze podatkov information_schema.
6. Med prenosom ENUM v druge RDBMS se lahko soočimo s težavo, ker veliko baz podatkov ne podpira te vrste podatkov.
7. Na oštevilčene sezname ne moremo dodati več atributov.