MySQL:n ENUM-tietotyyppi on a merkkijonoobjekti . Sen avulla voimme rajoittaa arvoa, joka on valittu sarakemäärittelyn sallittujen arvojen luettelosta taulukon luomisen yhteydessä. Se on lyhenne luettelointi , mikä tarkoittaa, että jokaisella sarakkeella voi olla jokin määritetyistä mahdollisista arvoista. Se käyttää numeeriset indeksit (1, 2, 3…) edustamaan merkkijonoarvoja.
MySQL ENUM-tietotyyppi sisältää seuraavat edut:
täysi summain
- Kompakti tiedon tallennus, jossa sarakkeessa voi olla rajoitettu joukko määritettyjä mahdollisia arvoja. Tässä merkkijonoarvoja käytetään automaattisesti numeerisena indeksinä.
- Se mahdollistaa luettavat kyselyt ja tulosteet, koska numerot voidaan kääntää uudelleen vastaavaksi merkkijonoksi.
- Se voi hyväksyä monia tietotyyppejä, kuten kokonaisluku, liukuluku, desimaali ja merkkijono.
Syntaksi
Seuraavassa on syntaksi, jota käytetään määrittämään ENUM-tietotyyppi sarakkeessa:
CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… );
Yllä olevassa syntaksissa olemme määrittäneet vain kolme ENUM-arvoa, mutta sitä voidaan kasvattaa tarpeidemme mukaan. Tässä meidän on varmistettava, että luetteloarvot pysyvät aina sisällä lainattu merkkijono literaali .
MySQL antaa meille mahdollisuuden määrittää ENUM-tietotyypin seuraavilla attribuuteilla:
EI TYHJÄ: Oletuksena ENUM-tietotyyppi on NULL. Jos emme halua sallia NULL-arvoja, on käytettävä NOT NULL -ominaisuutta määritettäessä ENUM-saraketta.
TYHJÄ: Se on synonyymi sanalle DEFAULT NULL, ja sen indeksiarvo on aina NULL.
OLETUS: Kun arvoa ei ole määritetty sarakkeessa, ENUM-tietotyyppi lisää oletusarvon. Toisin sanoen, jos INSERT-käsky ei anna arvoa tälle sarakkeelle, oletusarvo lisätään. DEFAULT-lauseke ei salli funktion lisäämistä. ENUM-tietotyyppi My SQL:ssä sisältää OLETUSarvot muodossa NULL tai tyhjä merkkijono ('').
java regex for
MySQL ENUM esimerkki
Ymmärrämme, kuinka ENUM-tietotyyppi toimii MySQL:ssä seuraavan kuvan avulla. Täällä aiomme luoda taulukon nimeltä ' paidat joka sisältää kolme saraketta: id, name ja size.
Kokosarake käyttää ENUM-tietotyyppiä, ja sen koko on pieni, keskikokoinen, suuri ja x-large. MySQL kartoittaa nämä luettelointijäsenet numeeriseen indeksiin, jossa pieni = 1, keskikokoinen = 2, suuri = 3 ja x-large = 4. Luo taulukko suorittamalla seuraava kysely:
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') );
Seuraavaksi meidän täytyy lisää arvot taulukkoon. Lisäyksen aikana luetteloarvot voidaan lisätä joko merkkijonoliteraalina tai sen numeerisina indekseinä, ja molemmat ovat samoja. Suorita seuraava käsky lisätäksesi arvot taulukkoon:
INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small');
Suorita nyt SELECT-käsky nähdäksesi taulukkoon lisätyt arvot:
mysql> SELECT * FROM shirts;
Seuraava kuva sisältää kaikki yllä olevat kyselytulokset, jotka sisältävät luettelointiarvot vain merkkijonoliteraaaleina:
ENUM Lajittelu
MySQL lajittelee luettelointiarvot niiden numeeristen indeksien perusteella, jotka riippuvat siitä, missä järjestyksessä olemme lisänneet tiedot sarakemäärityksessä. Esimerkiksi , jos olemme määrittäneet luettelon ENUM:ksi ('b', 'a', ', 'c'). Sitten b tulee ennen a, tyhjä merkkijono ennen c (ei-tyhjä merkkijono) ja NULL-arvo tulee ennen muita arvoja.
Joten jos emme halua saada odottamatonta tulosta ENUM-tietotyypillä käyttämällä ORDER BY -lausetta, noudata näitä sääntöjä:
java matematiikka pow
- Määritä luetteloarvot aakkosjärjestyksessä.
- On varmistettava, että sarakkeen nimi on leksikaalisessa järjestyksessä indeksinumeron sijaan.
Seuraava esimerkki selittää luettelon lajittelun selkeämmin. Joten jos haluat saada paitojen koon tietyssä järjestyksessä, suorita alla oleva lauseke:
mysql> SELECT * FROM shirts ORDER BY size DESC;
Tämä kysely antaa alla olevan tulosteen, josta voimme nähdä, että paitojen koko on laskevassa järjestyksessä:
ENUM-tietotyypin rajoitukset
Seuraavat ovat ENUM-tietotyypin haitat MySQL:ssä:
1. Jos haluamme muokata luettelon arvoja/jäseniä, se voidaan tehdä rakentamalla koko taulukko uudelleen komennolla ALTER TABLE. Se kuluttaa myös resurssejamme ja aikaamme kallista.
java merkkijono alimerkkijono
2. Emme voi käyttää lauseketta, jossa on luettelon jäseniä. Esimerkiksi tätä CREATE-käskyä ei suoriteta, koska se käyttää CONCAT()-funktiota luettelon jäsenten luomiseen.
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') );
3. Emme voi käyttää käyttäjämuuttujaa luettelointijäsenenä. Se näkyy alla olevassa esimerkissä:
SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') );
4. On suositeltavaa, että emme käytä numeerisia arvoja luettelon jäseninä.
5. Täydellisen tietojen luettelointiluettelon saaminen on monimutkaista, koska meidän on käytettävä information_schema-tietokantaa.
6. Saatamme kohdata ongelman siirrettäessä ENUM:a muihin RDBMS-järjestelmiin, koska monet tietokannat eivät tue tätä tietotyyppiä.
7. Emme voi lisätä attribuutteja luettelointiluetteloihin.