ENUM datu tips MySQL ir a stīgu objekts . Tas ļauj ierobežot vērtību, kas izvēlēta no atļauto vērtību saraksta kolonnas specifikācijā tabulas izveides laikā. Tas ir saīsinājums uzskaitījums , kas nozīmē, ka katrā kolonnā var būt viena no norādītajām iespējamajām vērtībām. Tā izmanto ciparu indeksi (1, 2, 3…), lai attēlotu virknes vērtības.
java virknes
MySQL ENUM datu tipam ir šādas priekšrocības:
- Kompakta datu krātuve, kurā kolonnai var būt ierobežots norādīto iespējamo vērtību kopums. Šeit virknes vērtības tiek automātiski izmantotas kā skaitliskais indekss.
- Tas nodrošina lasāmus vaicājumus un izvadi, jo skaitļus var pārtulkot vēlreiz attiecīgajā virknē.
- Tas var pieņemt daudzus datu tipus, piemēram, veselus skaitļus, peldošo komatu, decimāldaļu un virkni.
Sintakse
Tālāk ir norādīta sintakse, ko izmanto, lai kolonnā definētu ENUM datu tipu:
CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… );
Iepriekš minētajā sintaksē esam definējuši tikai trīs ENUM vērtības, taču to var palielināt atbilstoši mūsu vajadzībām. Šeit mums ir jāpārliecinās, ka uzskaites vērtībām vienmēr jābūt iekšā citētā virkne literāls .
MySQL ļauj mums definēt ENUM datu tipu ar šādiem atribūtiem:
NAV NULL: Pēc noklusējuma ENUM datu tips ir NULL. Ja mēs nevēlamies atļaut NULL vērtības, ir jāizmanto rekvizīts NOT NULL, norādot kolonnu ENUM.
NULL: Tas ir DEFAULT NULL sinonīms, un tā indeksa vērtība vienmēr ir NULL.
NOKLUSĒJUMS: Ja vērtība kolonnā nav norādīta, ENUM datu tips ievieto noklusējuma vērtību. Citiem vārdiem sakot, ja INSERT priekšraksts nenodrošina vērtību šai kolonnai, tiks ievietota noklusējuma vērtība. Izteiksme DEFAULT neļauj ievietot funkciju. ENUM datu tipā My SQL ir iekļautas NOKLUSĒJUMA vērtības kā NULL vai tukša virkne ('').
MySQL ENUM piemērs
Ļaujiet mums saprast, kā ENUM datu tips darbojas MySQL, izmantojot šādu ilustrāciju. Šeit mēs izveidosim tabulu ar nosaukumu ' krekli ', kurā ir trīs kolonnas: id, nosaukums un lielums.
Lieluma kolonnā tiek izmantots ENUM datu tips, un tai ir mazs, vidējs, liels un x-liels izmērs. MySQL kartē šos uzskaites locekļus ar skaitlisko indeksu, kur attiecīgi mazs = 1, vidējs = 2, liels = 3 un x-large = 4. Lai izveidotu tabulu, izpildiet šo vaicājumu:
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') );
Tālāk mums vajag ievietot vērtības tabulā. Ievietošanas laikā uzskaites vērtības var ievietot vai nu kā virknes literālu, vai tā skaitlisko indeksu, un abi ir vienādi. Izpildiet šo paziņojumu, lai tabulā ievietotu vērtības:
atrodiet kartē c++
INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small');
Tagad izpildiet priekšrakstu SELECT, lai redzētu tabulā ievietotās vērtības:
mysql> SELECT * FROM shirts;
Nākamajā attēlā ir visi iepriekš minētie vaicājuma rezultāti, kas satur uzskaites vērtības tikai virkņu literāļos:
ENUM šķirošana
MySQL sakārto uzskaites vērtības, pamatojoties uz to skaitliskiem indeksiem, kas ir atkarīgi no secības, kādā esam ievietojuši datus kolonnas specifikācijā. Piemēram , ja esam definējuši uzskaitījumu kā ENUM ('b', 'a', ', 'c'). Tad b ir pirms a, tukšā virkne ir pirms c (virkne, kas nav tukša), un NULL vērtība ir pirms citām vērtībām.
Tātad, ja mēs nevēlamies iegūt negaidītu rezultātu ar ENUM datu tipu, izmantojot ORDER BY klauzulu, ievērojiet šos noteikumus:
blakus esošie leņķi
- Definējiet uzskaites vērtības alfabēta secībā.
- Tas ir paredzēts, lai pārliecinātos, ka kolonnas nosaukums ir leksiskā secībā, nevis indeksa numurā.
Nākamajā piemērā ir skaidrāk izskaidrota uzskaites kārtošana. Tātad, ja vēlaties iegūt kreklu izmērus noteiktā secībā, izpildiet zemāk esošo paziņojumu:
mysql> SELECT * FROM shirts ORDER BY size DESC;
Šis vaicājums sniegs tālāk norādīto izvadi, kur mēs varam redzēt, ka kreklu izmēri ir dilstošā secībā:
ENUM datu veida ierobežojumi
Tālāk ir norādīti ENUM datu tipa trūkumi MySQL:
1. Ja vēlamies modificēt uzskaitījuma vērtības/biedrus, to var izdarīt, pārbūvējot visu tabulu, izmantojot komandu ALTER TABLE. Tas dārgi izmanto arī mūsu resursus un laiku.
2. Mēs nevaram izmantot izteiksmi ar uzskaites locekļiem. Piemēram, šis CREATE priekšraksts netiek izpildīts, jo tas izmanto funkciju CONCAT(), lai izveidotu uzskaites dalībniekus.
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') );
3. Mēs nevaram izmantot lietotāja mainīgo kā uzskaites dalībnieku. To var redzēt zemāk esošajā piemērā:
SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') );
4. Ieteicams neizmantot skaitliskās vērtības kā uzskaites dalībniekus.
5. Ir sarežģīti iegūt pilnīgu informācijas uzskaitīšanas sarakstu, jo mums ir jāpiekļūst informācijas_shēmas datubāzei.
cik liels ir mans monitors
6. Mēs varam saskarties ar problēmu ENUM pārnešanas laikā uz citām RDBVS, jo daudzas datu bāzes neatbalsta šo datu tipu.
7. Mēs nevaram pievienot vairāk atribūtu uzskaites sarakstiem.