Mysql enum datatype

Mysql enum datatype
Det finnes mange datatyper i MySQL for å lagre forskjellige data i databasetabellen. Enum -datatypen er en av dem. Den fulle form for enum er en oppregning. Når det kreves å sette inn en bestemt verdi fra listen over de forhåndsdefinerte verdiene i et felt i en tabell, brukes en enum datatype. Listen over verdier lagres som streng for enumfeltet, og antall valgte verdier fra listeverdiene vil bli satt inn i enumfeltet på innsatsen eller oppdateringstiden. Når enumfeltet blir hentet fra tabellen, vil det vise verdien fra tallet til det menneskelig lesbare formatet. Bruken av enum datatype i MySQL er vist i denne opplæringen.

Syntaks:

Syntaksen til enum -datatypen er gitt nedenfor.

Lag tabell tabell_navn (
..
enum_field enum ('val1', 'val2', ..., 'valn'),
..
);

Maksimum 65 535 verdier kan defineres som enumverdier.

Enum attributter:

Enum datatype har tre attributter. Disse er beskrevet nedenfor.

MISLIGHOLDE

Standardverdien for enum -datatypen er null. Hvis det ikke er gitt noen verdi for enumfeltet, vil nullverdien bli satt inn.

NULL

Det fungerer på samme måte som standardverdien hvis denne attributtet er satt til enumfeltet.

IKKE NULL

En advarselsmelding vil vises hvis denne attributtet er satt for enumfeltet og ingen verdi er gitt på innsettingstidspunktet.

Kontroller bruken av enum datatype:

Du må opprette en tabell med enum datatype i en MySQL -database for å sjekke bruken av enum datatype. Åpne terminalen og koble til MySQL -serveren ved å utføre følgende kommando.

$ sudo mysql -u root

Kjør følgende kommando for å opprette en database som heter test_db.

Opprette databasetest_db;

Kjør følgende kommando for å velge databasen.

Bruk test_db;

Kjør følgende spørsmål for å opprette en tabell som heter Bok med fem felt. Datatypen til type Feltet til denne tabellen er en enum som vil lagre en av tre verdier (ingeniørfag, medisinsk og virksomhet).

Lag tabellbok (
id int ikke null auto_increment primærnøkkel,
Navn varchar (50) ikke null,
Type Enum ('Engineering', 'Medical', 'Business'),
Forfatter varchar (50) ikke null,
pris float (5,2) ikke null
) Motor = innodb;

Kjør følgende kommando for å sjekke strukturen til Bok bord.

Beskrive bok;

Produksjon:

Følgende utgang vises etter å ha utført kommandoen ovenfor.

Sett inn gyldige data i tabellen:

Kjør følgende sett inn spørring for å sette inn tre poster i Bok bord. "Engineering," medisinsk "og" virksomhet "-verdier har blitt brukt til tabellens enumfelt, som er gyldige enumverdier. Så spørringen vil bli utført uten feil.

Sett inn 'bok' ('id', 'navn', 'type', 'forfatter', 'pris') verdier
(Null, 'Theory of Machines', 'Engineering', 'J.K. Gupta og r.S. Khurmi ', 59.99),
(Null, 'Pocket Medicine', 'Medical', 'Marc S Sabatine', 45.80),
(Null, 'Prinsipper for markedsføring', 'Business', 'Gary Armstrong og Philip Kotler', 60.00);

Les data fra tabellen:

Etter å ha utført Sett inn spørringen, kjører du følgende velg -spørring for å sjekke innholdet i Bok bord.

Velg * fra 'bok';

Produksjon:

Følgende utgang vises etter å ha utført kommandoen ovenfor.

Sett inn ugyldige data i tabellen:

Sett inn spørringen vil generere en feil hvis verdien som ikke eksisterer i enumlisten, vil bli prøvd å sette inn. I den følgende innsatsspørsmålet er 'BBA' -verdien satt for Enum -feltet (Type), men den samsvarer ikke med noen av Enum -elementene som er definert på tidspunktet for opprettelse av tabellen. Så følgende innsettingsspørsmål vil generere en feil etter utførelsen.

Sett inn 'bok' ('id', 'navn', 'type', 'forfatter', 'pris') verdier
(Null, 'Business Communication Essentials', 'BBA', 'Courtland L Bovee og John Thill', 59.99);

Produksjon:

Følgende utgang vises etter å ha utført kommandoen ovenfor. Her, feil nei 1265 har blitt generert, og ingen ny post vil bli satt inn.

Filtredata fra tabellen basert på numerisk enumverdi:

Strengverdien brukes på tidspunktet for å sette inn data i tabellens enumfelt, men de innsatte postene til tabellen kan hentes basert på den numeriske indeksen eller strengverdien til enumfeltet. Bruken av den numeriske indeksen for enumverdi for å filtrere dataene fra Bok Tabellen er vist i følgende valgte spørring. Den numeriske indeksen 2 i enumfeltet inneholder verdien, 'medisinsk.'Så postene som inneholder verdien 'Medisinsk' i typen felt av Bok Tabellen vises i utgangen. Det er bare en post i tabellen som samsvarer med kriteriene.

Velg ID, navn, type, forfatter, pris fra boken der type = 2;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor.

Filtredata fra tabellen basert på menneskelig lesbar enumverdi:

Det er ikke lettere å huske den numeriske indeksen for hver enumelementverdi hvis enumfeltet inneholder en liste over et stort antall elementer. I dette tilfellet er det bedre å bruke strengverdien til Enum -elementet i spørringen for å hente postene basert på enumfeltets verdi. Følgende Select Query vil filtrere postene der typefeltet inneholder verdien, 'virksomhet.I følge boktabelldataene er det bare en samsvarende post med type Verdi, 'virksomhet.'

Velg ID, navn, type, forfatter, pris fra boken hvor type = 'virksomhet';

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor.

Konklusjon:

Enum er en gunstig datatype av mysql. Innføring av ugyldige data kan forhindres ved å bruke denne datatypen. Måten å erklære og sette inn data i enumfeltet og måten å hente data basert på enumfeltet er vist i denne opplæringen ved å bruke eksempler på.