Når du opretter en tabel i en database, skal den have både et navn og en datatype. En kolonnes datatype definerer de værdier, kolonnen har, såsom heltal, penge, binær, tegn, dato og klokkeslæt. Derfor er det en udviklers opgave at bestemme, hvilke datatyper der skal gemmes i hver kolonne, mens der oprettes databaser og tabeller.
Enkelt sagt er datatyper retningslinjer, der hjælper SQL med at forstå, hvilken type data der kræves i en kolonne. Det er også effektivt til at identificere, hvordan SQL interagerer med de lagrede data.
Et punkt at bemærke er, at datatyper kan indeholde forskellige navne i forskellige databaser, og i tilfælde, hvor navnene er de samme, vil andre aspekter og detaljer såsom størrelse afvige. Derfor anbefales det, at du altid henviser til dokumentation, når du støder på lignende sager.
Følgende egenskaber kan identificere datatyper i MySQL:
- Værdierne af datatyper, der kan indekseres, og dem, der ikke kan indekseres
- Den type værdier, de repræsenterer
- Den plads, de optager, uanset om værdierne er af variabel længde eller fast længde
- Hvordan MySQL sammenlignes med de forskellige værdier af specifikke datatyper
Før vi dykker ned i og dækker MySQL-datatyper, er det vigtigt at lære og forstå de konventioner, der bruges af datatypebeskrivelserne som fremhævet nedenfor:
- (M ):For heltalstyper angiver det den maksimale bredde, som datatypen kan vise.
:Det angiver det samlede antal cifre, der kan gemmes for typer med faste kommaer og typer med flydende komma.
:For strengtyper viser den den maksimale længde
Bemærk:M 's maksimalt tilladte værdi afhænger af datatypen
• (D ):Gælder kun fastpunkttyper og flydende typer. Det angiver skalaen (antallet af cifre, der følger decimaltegnet). Den maksimalt mulige værdi er 10, mens den ikke bør være mere signifikant end M -2
• De firkantede parenteser ([og]) viser definitionstypen valgfrie dele.
• f sp: denne konvention gælder for tidsstempel, DateTime og tidstyper. Det repræsenterer brøksekunders præcision (antallet af cifre, der følger decimaltegnet i brøksekunder). Den givne fsp værdien skal ligge mellem 0-6. Værdi 0 betyder, at der ikke er nogen brøkdele til stede i den givne værdi. Men i tilfælde, hvor værdien er udeladt, angives præcisionen som værende 0.
I MySQL er der tre hovedkategorier af datatyper, der indeholder underkategorier. De primære datatyper er:
- Stringdatatyper
- Datatyper for dato og klokkeslæt.
- Numeriske datatyper
Der er andre datatyper, der understøttes af MySQL, såsom geografiske datatyper og JSON-datatyper.
Denne artikel skal dække alle de datatyper, der er nævnt ovenfor. Derfor skal du holde dig til denne artikel for at få en klar forståelse af datatyper.
Stringdatatyper
Strengdatatyperne bruges primært til at holde binære data og almindelig tekst såsom billeder og filer. Derudover har MYSQL mulighed for at sammenligne og søge i strengværdier baseret på det matchende mønster, såsom regulære udtryk og operatorer.
Nedenfor er en detaljeret illustration af alle de strengdatatyper, som MySQL understøtter:
CHAR ( størrelse ): Dette er den faste længde af en streng. Det kan enten indeholde bogstaver, specialtegn eller tal. Parameteren størrelse angiver kolonnens længde med tegn, og den kan variere fra 0-255. Standardstørrelsen er 1.
VARCHAR ( størrelse ): Dette er den variable længde af en streng. Den indeholder enten tal, specialtegn eller bogstaver. Parameteren størrelse viser kolonnens maksimale længde i tegn, og den kan variere fra 0-65535.
BINÆR ( størrelse ): Disse er lig med CHAR (), der kun gemmer binære byte-strenge. Parameteren størrelse angiver kolonnens længde i bytes. Standard er 1
VARBINÆR ( størrelse ): Dette er lig med VARCHAR (), kun at det gemmer binære byte-strenge. Parameteren størrelse angiver kolonnens maksimale længde i bytes.
TINYTEXT: Indeholder strenge med en maksimal længde på 255 tegn.
TEKST ( størrelse ): Indeholder strenge, der indeholder en maksimal længde på 65.535 bytes.
BLOB ( størrelse ): Til binære store objekter (BLOB'er). De kan indeholde op til 65.535 databytes.
TINY BLOB: Til binære store objekter (BLOB'er). Den indeholder en maksimal længde på 255 bytes.
LONGLOB: Til binære store objekter (BLOB'er). De kan indeholde op til 4.294.967.295 databytes.
LONGTEXT: Indeholder strenge, der indeholder en maksimal længde på 4.294.967.295 tegn.
MIDDELTEKST: Indeholder strenge, der indeholder en maksimal længde på 16.777.215 tegn.
MELLEMBLOB: Til binære store objekter (BLOB'er). De kan indeholde op til 16.777.215 databytes.
INDSTIL ( val1, val2, val3, … ): Dette er et strengobjekt, der indeholder mere end én værdi (strenge, der indeholder 0 eller flere værdier). De er valgt fra en liste over mulige værdier ligesom ENUM. I en SET-liste kan du dog kun angive op til 64 værdier.
ENUM ( val1, val2, val3, … ): Dette er et strengobjekt, der kun kan indeholde én værdi valgt fra en liste over alle mulige værdier. I en ENUM-liste kan du angive op til 65535 værdier. Hvis en værdi, der ikke er på listen, indsættes, vil den indsatte værdi være tom. Det er også vigtigt at bemærke, at værdierne er sorteret afhængigt af den rækkefølge, brugeren indtastede dem.
Datatyper for dato og klokkeslæt
Dato- og tidsdatatyperne angiver de tidsmæssige værdier som DateTime, timestamp, year, time og date. Hver af de nævnte tidsmæssige typer har værdier, der er inklusive nul. Når en ugyldig værdi indsættes, kan MySQL ikke repræsentere den. Derfor er der valgt et nul.
Nedenfor er en omfattende illustration af datatyperne for dato og klokkeslæt, der understøttes af MySQL:
DATO: Standarddatoformatet er henholdsvis år, måneder og dage (ÅÅÅÅ-MM-DD), og det understøttede interval er '1000-01-01' til '9999-12-31'.
DATETIME ( fsp ): Dette er kombinationen af både dato og klokkeslæt. Standardformatet i dette tilfælde er henholdsvis år, måneder, dage, timer, minutter og sekunder (ÅÅÅÅ-MM-DD tt:mm:ss)
Bemærk: Tilføjelse af en DEFAULT og ON UPDATE i en kolonne er afgørende for at starte automatisk initialisering, og det opdaterer det aktuelle klokkeslæt og dato.
TIMESTAMP ( fsp ): Siden Unix-epoken er tidsstempelværdier lagret som antallet af sekunder, såsom ('1970-01-01 00;00;00' UTC). Standardformatet er henholdsvis år, måneder, dage, timer, minutter og sekunder (ÅÅÅÅ-MM-DD tt:mm:ss), mens det understøttede interval er mellem '('1970-01-01 00;00;01' UTC til ('2038-01-09 03;14;07' UTC. DEFAULT_CURRENT_TIMESTAMP og ON UPDATE CURRENT_TIMESTAMP er afgørende for automatisk initialisering og opdatering af den aktuelle dato og klokkeslæt.
TID ( fsp ): Det understøttede standardtidsformat er henholdsvis timer, minutter, sekunder (tt:mm:ss), og det understøttede interval er "-838:59:59" til "838:59:59".
ÅR: Et år er repræsenteret i et firecifret format – de tilladte værdier i det firecifrede format går fra 1902 til 2155 og 0000.
Bemærk: Den seneste version af MySQL (8.0) understøtter ikke det tocifrede formatår.
Numeriske datatyper
De numeriske datatyper omfatter alle de nøjagtige numeriske datatyper såsom heltal, decimal og numerisk. Den indeholder også de omtrentlige numeriske datatyper såsom float, double, double precision og real. Numeriske datatyper gemmer bitværdier, da de understøtter BIT-datatyperne. Normalt er numeriske datatyper i MySQL opdelt i to kategorier:Signerede datatyper og Usignerede datatyper; dette er dog en undtagelse fra bitdatatyper.
Nedenfor er en detaljeret illustration, der indeholder alle de numeriske datatyper, der understøttes af MySQL, og deres beskrivelse:
BIT ( størrelse ): Dette er en bit-værdi-type, hvor antallet af bits pr. værdi er angivet som størrelse . Parameteren størrelse har evnen til at holde værdier fra 1 til 64, og dens standardværdi for størrelse er 1.
TINYINT ( størrelse ): Dette er et meget lille heltal, hvis fortegnsinterval går fra -128 til 127, mens dets område uden fortegn varierer fra 0 til 255. Parameteren størrelse angiver den maksimale bredde, der skal vises, hvilket er omkring 255.
BOOLEAN: Det er lig med en BOOL
BOOL: I en BOOL anses værdier, der ikke er nul, for at være sande. Samtidig anses nulværdierne for at være falske.
INT ( størrelse ): Dette er et mellemstort heltal, hvis fortegnsinterval spænder fra -2147483648 til 2147483647, mens det usignerede interval varierer fra 0 til 4294967295. Parameteren størrelse angiver den maksimale bredde, der skal vises, hvilket er omkring 255.
MEDIUMINT ( størrelse ): Dette er også et medium heltal, hvis fortegnsinterval spænder fra -32768 til 32767, mens dets usignerede interval varierer fra 0 til 65535. Parameterenstørrelse angiver den maksimale bredde, der skal vises, hvilket er omkring 255.
SMALLINT ( størrelse ): Dette er et lille heltal, hvis fortegnsinterval er mellem -32768 til 32767, mens det usignerede interval er mellem 0 og 16777215. størrelsen parameter, i dette tilfælde, bruges til at angive den maksimale visningsbredde, hvis område er omkring 255.
FLYDE ( størrelse, d ): Det er et flydende kommatal, hvis samlede antal cifre er angivet i størrelse. d parameter hjælper med at angive antallet af cifre efter decimaltegnet.
Bemærk: denne parameter er blevet forældet i MySQL version 8.0.17. Derfor vil det ikke blive gengivet i fremtidige versioner af MySQL.
HELTTAL ( størrelse ): Dette svarer til en INT (størrelse ).
FLYDE( p ): Det er et floating-point tal. P parameter bruges til at bestemme, om en FLOAT eller en DOUBLE vil blive brugt i en resulterende datatype. Når P -værdien går fra 0 til 24, dataene er kendt som en FLOAT (). Hvorimod når P -værdien går fra 25 til 53, derefter ændres datatypen til en DOBBELT ().
DEC ( størrelse, d ): Dette svarer til en DECIMAL (størrelse, d )
DOBLE ( størrelse, d ): Dette angiver en standard størrelse flydende kommanummer, hvis samlede antal cifre er angivet i størrelse. d parameter hjælper med at angive antallet af cifre efter decimaltegnet.
DECIMAL ( størrelse, d ): Det er et nøjagtigt fast punktnummer, hvis samlede antal cifre er angivet i størrelse . d parameter angiver antallet af cifre efter decimaltegnet. Den maksimale størrelse tallet er 65, mens d maksimalt antal er 30. Derfor er standardværdien for d er 0, mens standardværdien for størrelse er 10.
Bemærk: alle de numeriske typer indeholder ekstra muligheder; ZEROFILL og USIGNET. Hvis indstillingen UNSIGNED tilføjes, vil MySQL ikke tillade de negative værdier i kolonnen. På den anden side, hvis ZEROFILL-indstillingen tilføjes, vil MySQL automatisk tilføje UNSIGNED-attributten til den nævnte kolonne.
Andre datatyper
Boolsk datatype
Den mindste heltalstype TINYINT (1) bruges til at repræsentere booleske værdier i MySQL, da MySQL ikke indeholder en indbygget BOOL- eller BOOLEAN-datatype. Når du arbejder med BOOL- og BOOLEAN-værdier, bør du derfor sidestille dem med TINYINT (1).
Geografisk datatype
MySQL understøtter flere rumlige datatyper, der har forskellige slags geografiske og geometriske værdier, som angivet nedenfor:
GEOMETRI: Dette er et aggregat eller punkt, der kan holde den rumlige værdi af enhver type, så længe de har en placering.
POLYGON: Dette er en plan overflade repræsenteret af en flersidet geometri. Det kan enten defineres ved nul eller kun én ydre og flere indre grænser.
FLERE LINESTRING: Dette er en multi-kurve geometri, der indeholder en samling af LINESTRING værdier.
MULTIPOLYGON: Dette er et objekt med flere overflader repræsenteret af en samling af flere polygonelementer, og det er en todimensionel geometri
PUNKT: Dette er et punkt eller et par, der indeholder X- og Y-koordinaterne. Det kan siges at være et punkt i en geometri, der repræsenterer et enkelt sted.
GEOMETRY COLLECTION: Dette er en samling af GEOMETRY-værdier
LINESTRING: Dette er en kurve, der indeholder en eller flere punktværdier. I tilfælde, hvor en linjestreng kun indeholder to punkter, betyder det, at den repræsenterer en linje.
FLERE POINT: Dette er en samling af POINT-værdier, hvorved punktet ikke kan bestilles eller forbindes på nogen måde.
JSON-datatype
MYSQL har understøttet den native JSON-datatype siden starten af version 5.7.8, hvilket tillod lagring og administration af JSON-dokumenter meget hurtigt og effektivt. Derudover er den oprindelige JSON-datatype ansvarlig for at levere optimalt lagerformat og automatisk validering af JSON-dokumenter.
Konklusion
Denne artikel har omfattende dækket alle aspekter vedrørende MySQL-datatyper, som vil hjælpe dig med at forstå, hvilke datatyper der skal bruges, og hvordan de skal bruges. Vi mener, at artiklen også vil hjælpe med at forbedre din viden om MySQL.