sql >> Databasteknik >  >> RDS >> Mysql

MySQL-datatyper:Lär dig vilka du ska använda och hur

När du skapar en tabell i en databas bör den ha både ett namn och en datatyp. En kolumns datatyp definierar värdena som kolumnen har, såsom heltal, pengar, binär, tecken, datum och tid. Därför är det en utvecklares uppgift att bestämma vilka datatyper som kommer att lagras i varje kolumn samtidigt som databaser och tabeller skapas.

Enkelt uttryckt är datatyper riktlinjer som hjälper SQL att förstå vilken typ av data som krävs i en kolumn. Det är också effektivt för att identifiera hur SQL interagerar med lagrad data.

En poäng att notera är att datatyper kan innehålla olika namn i olika databaser, och i de fall där namnen är desamma kommer andra aspekter och detaljer som storlek att skilja sig åt. Därför rekommenderas det att du alltid hänvisar till dokumentationen när du stöter på liknande fall.

Följande egenskaper kan identifiera datatyper i MySQL:

  • Värdena för datatyper som kan indexeras och de som inte kan indexeras
  • Typen av värden de representerar
  • Utrymmet de upptar, oavsett om värdena är av variabel längd eller fast längd
  • Hur MySQL jämförs med olika värden för specifika datatyper

Innan vi dyker in och täcker MySQL-datatyper är det viktigt att lära sig och förstå de konventioner som används av datatypsbeskrivningarna som markeras nedan:

  • (M ):För heltalstyper indikerar det den maximala bredd som datatypen kan visa.
    :Det anger det totala antalet siffror som kan lagras för typer av fasta komma och flyttalstyper.
    :För strängtyper visar den maximal längd

Obs! M s högsta tillåtna värde beror på datatypen

• (D ):Gäller endast fixpunktstyper och flytande punkter. Det indikerar skalan (antalet siffror som följer decimalkomma). Det högsta möjliga värdet är 10, men det bör inte vara mer signifikant än M -2

• De fyrkantiga parenteserna ([och]) visar definitionstypens valfria delar.

f sp: denna konvention gäller tidsstämpel, datum och tid. Det representerar bråksekundersprecisionen (antalet siffror som följer decimalkomma under bråksekunder). Den givna fsp värdet måste variera från 0-6. Värde 0 betyder att det inte finns några bråkdelar i det givna värdet. Men i de fall där värdet utelämnas, betecknas precisionen som 0.

I MySQL finns det tre huvudkategorier av datatyper som innehåller underkategorier. De primära datatyperna är:

  1. Strängdatatyper
  2. Datatyper för datum och tid.
  3. Numeriska datatyper

Det finns andra datatyper som stöds av MySQL, till exempel rumsliga datatyper och JSON-datatyper.

Denna artikel ska heltäckande täcka alla datatyper som nämns ovan. För att få en tydlig förståelse av datatyper, håll dig därför till den här artikeln.

Strängdatatyper

Strängdatatyperna används främst för att hålla binär data och vanlig text som bilder och filer. Dessutom har MYSQL möjlighet att jämföra och söka strängvärden baserat på matchningsmönstret, såsom reguljära uttryck och operatorer.

Nedan är en detaljerad illustration av alla strängdatatyper som MySQL stöder:

CHAR ( storlek ): Detta är den fasta längden på en sträng. Det kan antingen innehålla bokstäver, specialtecken eller siffror. Parametern storlek anger längden på kolumnen med tecken, och den kan variera från 0-255. Standardstorleken är 1.

VARCHAR ( storlek ): Detta är den variabla längden på en sträng. Den innehåller antingen siffror, specialtecken eller bokstäver. Parametern storlek visar kolumnens maximala längd i tecken, och den kan variera från 0-65535.

BINÄRT ( storlek ): Dessa är lika med CHAR (), lagrar bara binära bytesträngar. Parametern storlek anger längden på kolumnen i byte. Standard är 1

VARBINÄRT ( storlek ): Detta är lika med VARCHAR (), bara att det lagrar binära bytesträngar. Parametern storlek anger kolumnens maximala längd i byte.

TINYTEXT: Rymmer strängar som innehåller en maximal längd på 255 tecken.

TEXT ( storlek ): Rymmer strängar som innehåller en maximal längd på 65 535 byte.

BLOB ( storlek ): För binära stora objekt (BLOBs). De rymmer upp till 65 535 databyte.

TINYBLOB: För binära stora objekt (BLOBs). Den innehåller en maximal längd på 255 byte.

LONGLOB: För binära stora objekt (BLOBs). De rymmer upp till 4 294 967 295 databyte.

LONGTEXT: Rymmer strängar som innehåller en maximal längd på 4 294 967 295 tecken.

MEDIUMTEXT: Rymmer strängar som innehåller en maximal längd på 16 777 215 tecken.

MEDIUMBLOB: För binära stora objekt (BLOBs). De rymmer upp till 16 777 215 databyte.

SET ( val1, val2, val3, … ): Detta är ett strängobjekt som innehåller mer än ett värde (strängar som innehåller 0 eller fler värden). De är valda från en lista med möjliga värden precis som ENUM. Men i en SET-lista kan du bara lista upp till 64 värden.

ENUM ( val1, val2, val3, … ): Detta är ett strängobjekt som bara kan innehålla ett värde valt från en lista med alla möjliga värden. I en ENUM-lista kan du lista upp till 65535 värden. Om ett värde som inte finns i listan infogas, kommer värdet som infogas att vara tomt. Det är också viktigt att notera att värdena sorteras beroende på vilken ordning användaren angav dem.

Datatyper för datum och tid

Datum- och tidsdatatyperna anger tidsvärden som DateTime, tidsstämpel, år, tid och datum. Var och en av de nämnda tidstyperna har värden som är inklusive noll. Närhelst ett ogiltigt värde infogas kan MySQL inte representera det. Därför väljs en nolla.

Nedan är en omfattande illustration av datatyperna för datum och tid som stöds av MySQL:

DATUM: Standarddatumformatet är år, månader respektive dagar (ÅÅÅÅ-MM-DD), och intervallet som stöds är "1000-01-01" till "9999-12-31".

DATETIME ( fsp ): Detta är kombinationen av både datum och tid. Standardformatet, i det här fallet, är år, månader, dagar, timmar, minuter respektive sekunder (ÅÅÅÅ-MM-DD hh:mm:ss)

Obs! Att lägga till en DEFAULT och ON UPDATE i en kolumn är viktigt för att starta automatisk initiering, och den uppdaterar aktuell tid och datum.

TIDSSTÄMPEL ( fsp ): Sedan Unix-epoken lagras tidsstämpelvärden som antalet sekunder som ('1970-01-01 00;00;00' UTC). Standardformatet är år, månader, dagar, timmar, minuter respektive sekunder (ÅÅÅÅ-MM-DD hh:mm:ss) medan det stödda intervallet är mellan '('1970-01-01 00;00;01' UTC till ('2038-01-09 03;14;07' UTC. DEFAULT_CURRENT_TIMESTAMP och ON UPDATE CURRENT_TIMESTAMP är viktiga för att automatiskt initiera och uppdatera aktuellt datum och tid.

TID ( fsp ): Det vanliga tidsformatet som stöds är timmar, minuter, sekunder (hh:mm:ss), och det stödda intervallet är "-838:59:59" till "838:59:59".

ÅR: Ett år representeras i ett fyrsiffrigt format – de tillåtna värdena i det fyrsiffriga formatet sträcker sig från 1902 till 2155 och 0000.

Obs! Den senaste versionen av MySQL (8.0) stöder inte det tvåsiffriga formatet år.

Numeriska datatyper

De numeriska datatyperna inkluderar alla exakta numeriska datatyper som heltal, decimal och numerisk. Den innehåller också ungefärliga numeriska datatyper som float, double, double precision och real. Numeriska datatyper lagrar bitvärden eftersom de stöder BIT-datatyperna. Vanligtvis är numeriska datatyper i MySQL indelade i två kategorier:Signerade datatyper och Osignerade datatyper; detta är dock ett undantag från bitdatatyper.

Nedan är en detaljerad illustration som innehåller alla numeriska datatyper som stöds av MySQL och deras beskrivning:

BIT ( storlek ): Detta är en bitvärdestyp där antalet bitar per värde anges i termer av storlek . Parametern storlek har förmågan att hålla värden från 1 till 64, och dess standardvärde för storlek är 1.

TINYINT ( storlek ): Detta är ett mycket litet heltal vars teckenintervall sträcker sig från -128 till 127 medan dess osignerade intervall sträcker sig från 0 till 255. Parametern storlek anger den maximala bredd som ska visas, vilket är cirka 255.

BOOLEAN: Det är lika med en BOOL

BOOL: I en BOOL anses värdena som inte är noll vara sanna. Samtidigt anses nollvärdena vara falska.

INT ( storlek ): Detta är ett medium heltal vars teckenintervall sträcker sig från -2147483648 till 2147483647, medan det osignerade intervallet sträcker sig från 0 till 4294967295. Parametern storlek anger den maximala bredd som ska visas, vilket är cirka 255.

MEDIUMINT ( storlek ): Detta är också ett medelhögt heltal vars teckenintervall sträcker sig från -32768 till 32767 medan dess osignerade intervall sträcker sig från 0 till 65535. Parameternstorlek anger den maximala bredd som ska visas, vilket är cirka 255.

SMALLINT ( storlek ): Detta är ett litet heltal vars teckenintervall är mellan -32768 till 32767, medan det osignerade intervallet är mellan 0 och 16777215. storleken parametern, i det här fallet, används för att ange den maximala visningsbredden, vars intervall är cirka 255.

FLYTTA ( storlek, d ): Det är ett flyttal vars totala antal siffror anges i storlek. d parametern hjälper till att ange antalet siffror efter decimalkomma.

Obs! denna parameter har föråldrats i MySQL version 8.0.17. Därför kommer den inte att reproduceras i framtida versioner av MySQL.

HELTTAL ( storlek ): Detta motsvarar en INT (storlek ).

FLYTTA( p ): Det är ett flyttal. P parameter används för att bestämma om en FLOAT eller en DUBBEL kommer att användas i en resulterande datatyp. När P -värdet sträcker sig från 0 till 24, data är känd som en FLOAT (). Medan när P -värdet sträcker sig från 25 till 53, sedan ändras datatypen till en DUBBEL ().

DEC ( storlek, d ): Detta är en motsvarighet till en DECIMAL (storlek, d )

DUBBLA ( storlek, d ): Detta anger en standardstorlek flyttalsnummer vars totala antal siffror anges i storlek. d parametern hjälper till att ange antalet siffror efter decimalkomma.

DECIMAL ( storlek, d ): Det är ett exakt fast punktnummer vars totala antal siffror anges i termer av storlek . d parametern anger antalet siffror efter decimalkomma. Maximal storlek numret är 65, medan d maximalt antal är 30. Därför är standardvärdet för d är 0, medan standardvärdet för storlek är 10.

Obs! alla numeriska typer innehåller extra alternativ; ZEROFILL och OSIGNERAD. Om alternativet UNSIGNED läggs till, kommer MySQL inte att tillåta de negativa värdena i kolumnen. Å andra sidan, om ZEROFILL-alternativet läggs till, kommer MySQL automatiskt att lägga till UNSIGNED-attributet till nämnda kolumn.

Andra datatyper

Boolesk datatyp

Den minsta heltalstypen TINYINT (1), används för att representera booleska värden i MySQL eftersom MySQL inte innehåller en inbyggd BOOL- eller BOOLEAN-datatyp. Därför, när du arbetar med BOOLS och BOOLEAN, bör du likställa dem med TINYINT (1).

Spatial datatyp

MySQL ger stöd för flera rumsliga datatyper som har olika typer av geografiska och geometriska värden, som anges nedan:

GEOMETRI: Detta är ett aggregat eller punkt som kan hålla det rumsliga värdet av vilken typ som helst så länge de har en plats.

POLYGON: Detta är en plan yta representerad av en flersidig geometri. Den kan antingen definieras av noll eller endast en yttre och fler inre gränser.

FLERA LINESTRING: Detta är en flerkurvsgeometri som innehåller en samling LINESTRING-värden.

MULTIPOLYGON: Detta är ett objekt med flera ytor som representeras av en samling av flera polygonelement, och det är en tvådimensionell geometri

PUNKT: Detta är en punkt eller ett par som innehåller X- och Y-koordinaterna. Det kan sägas vara en punkt i en geometri som representerar en enda plats.

GEOMETRY COLLECTION: Detta är en samling GEOMETRY-värden

LINESTRING: Detta är en kurva som innehåller ett eller flera punktvärden. I fall där en linjesträng bara innehåller två punkter, betyder det att den representerar en linje.

MULTIPONT: Detta är en samling POINT-värden där punkten inte kan ordnas eller kopplas ihop på något sätt.

JSON-datatyp

MYSQL har stödt den inbyggda JSON-datatypen sedan starten av version 5.7.8, vilket möjliggjorde lagring och hantering av JSON-dokument mycket snabbt och effektivt. Dessutom är den inbyggda JSON-datatypen ansvarig för att tillhandahålla optimalt lagringsformat och automatisk validering av JSON-dokument.

Slutsats

Den här artikeln har utförligt täckt alla aspekter angående MySQL-datatyper som hjälper dig att förstå vilka datatyper som ska användas och hur de ska användas. Vi tror att artikeln också kommer att förbättra dina kunskaper om MySQL.


  1. Parametrisera en SQL IN-sats

  2. Finns det någon skillnad mellan SQL Server Express (2012) och LocalDB?

  3. Hur löser man tvetydiga kolumnnamn när man hämtar resultat?

  4. Webbseminarium:Nya funktioner i Postgres 12 [Följa upp]