sql >> Databáze >  >> RDS >> Mysql

Datové typy MySQL:Poznejte, které a jak používat

Při vytváření tabulky v databázi by měla mít název i datový typ. Datový typ sloupce definuje hodnoty, které sloupec obsahuje, jako je celé číslo, peníze, binární kód, znak, datum a čas. Proto je úkolem vývojáře určit, které datové typy budou při vytváření databází a tabulek uloženy v jednotlivých sloupcích.

Jednoduše řečeno, datové typy jsou pokyny, které pomáhají SQL pochopit, jaký typ dat je vyžadován uvnitř sloupce. Je také efektivní při identifikaci toho, jak SQL interaguje s uloženými daty.

Je třeba poznamenat, že datové typy mohou v různých databázích obsahovat různá jména a v případech, kdy jsou názvy stejné, se budou lišit další aspekty a podrobnosti, jako je velikost. Proto se doporučuje, abyste vždy, když narazíte na podobné případy, nahlédli do dokumentace.

Následující charakteristiky mohou identifikovat datové typy v MySQL:

  • Hodnoty datových typů, které lze indexovat, a datových typů, které indexovat nelze
  • Typ hodnot, které představují
  • Prostor, který zabírají, ať už mají hodnoty proměnnou délku nebo pevnou délku
  • Jak se MySQL srovnává s různými hodnotami konkrétních datových typů

Než se ponoříme do datových typů MySQL a pokryjeme je, je nezbytné se naučit a pochopit konvence používané popisy datových typů, jak je zvýrazněno níže:

  • (M ):U celočíselných typů označuje maximální šířku, kterou může datový typ zobrazit.
    :Označuje celkový počet číslic, které lze uložit pro typy s pevnou a plovoucí desetinnou čárkou.
    :U typů řetězců ukazuje maximální délku

Poznámka:M maximální přípustná hodnota závisí na typu dat

• (D ):Platí pouze pro typy s pevnou řádovou čárkou a typy s pohyblivou řádovou čárkou. Označuje stupnici (počet číslic, které následují za desetinnou čárkou). Maximální možná hodnota je 10, přičemž by neměla být významnější než M -2

• Hranaté závorky ([a]) zobrazují volitelné části typu definice.

f sp: tato konvence platí pro časové razítko, datum a čas a typy času. Představuje přesnost na zlomky sekund (počet číslic, které následují za desetinnou čárkou po dobu zlomků sekund). Dané fsp hodnota musí být v rozsahu 0-6. Hodnota 0 znamená, že v dané hodnotě nejsou přítomny žádné zlomkové části. V případech, kdy je hodnota vynechána, je však přesnost označena jako 0.

V MySQL existují tři hlavní kategorie datových typů, které obsahují podkategorie. Primární datové typy jsou:

  1. Datové typy řetězců
  2. Datové typy data a času.
  3. Číselné datové typy

MySQL podporuje další datové typy, jako jsou prostorové datové typy a datové typy JSON.

Tento článek bude komplexně pokrývat všechny výše uvedené datové typy. Chcete-li tedy jasně porozumět datovým typům, držte se tohoto článku.

Datové typy řetězců

Datové typy řetězců se primárně používají k uložení binárních dat a prostého textu, jako jsou obrázky a soubory. Kromě toho má MYSQL možnost porovnávat a vyhledávat hodnoty řetězců na základě shodného vzoru, jako jsou regulární výrazy a operátory.

Níže je podrobná ilustrace všech řetězcových datových typů, které MySQL podporuje:

CHAR ( velikost ): Toto je pevná délka řetězce. Může obsahovat písmena, speciální znaky nebo čísla. Parametr velikost označuje délku sloupce ve znacích a může být v rozsahu 0-255. Výchozí velikost je 1.

VARCHAR ( velikost ): Toto je proměnná délka řetězce. Obsahuje buď čísla, speciální znaky nebo písmena. Parametr velikost zobrazuje maximální délku sloupce ve znacích a může se pohybovat od 0 do 65535.

BINÁRNÍ ( velikost ): Ty se rovnají CHAR (), pouze ukládají binární bajtové řetězce. Parametr velikost určuje délku sloupce v bajtech. Výchozí hodnota je 1

VARBINARY ( velikost ): To se rovná VARCHAR (), pouze ukládá binární bajtové řetězce. Parametrvelikost určuje maximální délku sloupce v bajtech.

TINYTEXT: Obsahuje řetězce, které obsahují maximální délku 255 znaků.

TEXT ( velikost ): Obsahuje řetězce, které obsahují maximální délku 65 535 bajtů.

BLOB ( velikost ): Pro binární velké objekty (BLOB). Obsahují až 65 535 datových bytů.

TINYBLOB: Pro binární velké objekty (BLOB). Obsahuje maximální délku 255 bajtů.

LONGLOB: Pro binární velké objekty (BLOB). Obsahují až 4 294 967 295 datových bytů.

LONGTEXT: Obsahuje řetězce, které obsahují maximální délku 4 294 967 295 znaků.

MEDIUMTEXT: Obsahuje řetězce, které obsahují maximální délku 16 777 215 znaků.

MEDIUMBLOB: Pro binární velké objekty (BLOB). Obsahují až 16 777 215 datových bytů.

SET ( hodnota1, hodnota2, hodnota3, … ): Jedná se o objekt typu řetězec, který obsahuje více než jednu hodnotu (řetězce, které obsahují 0 nebo více hodnot). Vybírají se ze seznamu možných hodnot stejně jako ENUM. V seznamu SET však můžete uvést maximálně 64 hodnot.

ENUM ( hodnota1, hodnota2, hodnota3, … ): Jedná se o objekt typu řetězec, který může obsahovat pouze jednu hodnotu vybranou ze seznamu všech možných hodnot. V seznamu ENUM můžete uvést až 65535 hodnot. Pokud je vložena hodnota, která není v seznamu, bude vložená hodnota prázdná. Je také důležité poznamenat, že hodnoty jsou seřazeny v závislosti na pořadí, v jakém je uživatel zadal.

Datové typy data a času

Datové typy data a času určují časové hodnoty, jako je datum a čas, časové razítko, rok, čas a datum. Každý z uvedených časových typů má hodnoty, které jsou včetně nuly. Kdykoli je vložena neplatná hodnota, MySQL ji nemůže reprezentovat. Proto je zvolena nula.

Níže je komplexní ilustrace datových typů data a času podporovaných MySQL:

DATUM: Standardní formát data jsou roky, měsíce a dny (RRRR-MM-DD) a podporovaný rozsah je „1000-01-01“ až „9999-12-31“.

DATETIME ( fsp ): Jedná se o kombinaci data a času. Standardní formát je v tomto případě roky, měsíce, dny, hodiny, minuty a sekundy (RRRR-MM-DD hh:mm:ss)

Poznámka: Přidání DEFAULT a ON UPDATE do sloupce je zásadní pro spuštění automatické inicializace a aktualizuje aktuální čas a datum.

TIMESTAMP ( fsp ): Od epochy Unixu jsou hodnoty časových razítek ukládány jako počet sekund, například (‚1970-01-01 00;00;00‘ UTC). Standardní formát jsou roky, měsíce, dny, hodiny, minuty a sekundy (RRRR-MM-DD hh:mm:ss), přičemž podporovaný rozsah je mezi '('1970-01-01 00;00;01' UTC na ('2038-01-09 03;14;07' UTC. DEFAULT_CURRENT_TIMESTAMP a ON UPDATE CURRENT_TIMESTAMP jsou životně důležité pro automatickou inicializaci a aktualizaci aktuálního data a času.

ČAS ( fsp ): Standardní podporovaný formát času jsou hodiny, minuty, sekundy (hh:mm:ss) a podporovaný rozsah je „-838:59:59“ až „838:59:59“.

ROK: Rok je uveden ve čtyřmístném formátu – hodnoty povolené ve čtyřmístném formátu se pohybují od 1902 do 2155 a 0000.

Poznámka: Nejnovější verze MySQL (8.0) nepodporuje dvoumístný formát roku.

Číselné datové typy

Číselné datové typy zahrnují všechny přesné číselné datové typy, jako je celé číslo, desítkové a číselné. Obsahuje také přibližné číselné datové typy, jako je float, double, double precision a real. Číselné datové typy ukládají bitové hodnoty, protože podporují datové typy BIT. Číselné datové typy v MySQL se obvykle dělí do dvou kategorií:Podepsané datové typy a nepodepsané datové typy; toto je však výjimka z bitových datových typů.

Níže je podrobná ilustrace obsahující všechny číselné datové typy podporované MySQL a jejich popis:

BIT ( velikost ): Jedná se o typ bitové hodnoty, u kterého je počet bitů na hodnotu označen jako velikost . Parametr velikost má schopnost uchovávat hodnoty od 1 do 64 a jeho výchozí hodnota pro velikost je 1.

TINYINT ( velikost ): Toto je velmi malé celé číslo, jehož rozsah se znaménkem se pohybuje od -128 do 127, zatímco jeho rozsah bez znaménka je od 0 do 255. Parametr size označuje maximální šířku, která se má zobrazit, což je přibližně 255.

BOOLEAN: Je to rovno BOOL

BOOL: V BOOL jsou nenulové hodnoty považovány za pravdivé. Nulové hodnoty jsou zároveň považovány za nepravdivé.

INT ( velikost ): Toto je střední celé číslo, jehož rozsah se znaménkem se pohybuje od -2147483648 do 2147483647, zatímco rozsah bez znaménka se pohybuje od 0 do 4294967295. Parametr size určuje maximální šířku, která se má zobrazit, což je asi 255.

STŘEDNÍ ( velikost ): Toto je také střední celé číslo, jehož rozsah se znaménkem se pohybuje od -32768 do 32767, zatímco jeho rozsah bez znaménka se pohybuje od 0 do 65535. Parametrvelikost určuje maximální šířku, která se má zobrazit, což je asi 255.

SMALLINT ( velikost ): Toto je malé celé číslo, jehož rozsah se znaménkem je mezi -32768 až 32767, zatímco rozsah bez znaménka je mezi 0 až 16777215. velikost parametr se v tomto případě používá k určení maximální šířky zobrazení, jejíž rozsah je přibližně 255.

PLOVOUCÍ ( velikost, d ): Je to číslo s plovoucí desetinnou čárkou, jehož celkový počet číslic je označen velikostí. d Parametr pomáhá určit počet číslic za desetinnou čárkou.

Poznámka: tento parametr byl v MySQL verze 8.0.17 zastaralý. Proto nebude reprodukován v budoucích verzích MySQL.

INTEGER ( velikost ): To je ekvivalentní INT (velikost ).

PLOVOUCÍ ( p ): Je to číslo s plovoucí desetinnou čárkou. P Parametr se používá k určení, zda se ve výsledném datovém typu použije FLOAT nebo DOUBLE. Když P -hodnota se pohybuje od 0 do 24, data jsou známá jako FLOAT (). Zatímco když P -hodnota se pohybuje od 25 do 53, poté se datový typ změní na DOUBLE ().

DEC ( velikost, d ): Toto je ekvivalent DECIMAL (velikost, d )

DVOJITÉ ( velikost, d ): To označuje standardní velikost číslo s plovoucí desetinnou čárkou, jehož celkový počet číslic je dán velikostí. d Parametr pomáhá určit počet číslic za desetinnou čárkou.

DESETINNÉ ( velikost, d ): Je to přesné číslo s pevnou řádovou čárkou, jehož celkový počet číslic je specifikován pomocí velikost . d Parametr určuje počet číslic za desetinnou čárkou. Maximální velikost číslo je 65, zatímco d maximální počet je 30. Proto je výchozí hodnota pro d je 0, zatímco výchozí hodnota pro velikost je 10.

Poznámka: všechny číselné typy obsahují další možnosti; ZEROFILL a UNSIGNED. Pokud je přidána možnost UNSIGNED, pak MySQL nepovolí záporné hodnoty ve sloupci. Na druhou stranu, pokud je přidána možnost ZEROFILL, MySQL automaticky přidá atribut UNSIGNED do uvedeného sloupce.

Další typy dat

Booleovský datový typ

Nejmenší celé číslo typu TINYINT (1) se používá k reprezentaci booleovských hodnot v MySQL, protože MySQL neobsahuje vestavěný datový typ BOOL nebo BOOLEAN. Proto, když pracujete s BOOL a BOOLEAN, měli byste je přirovnat k TINYINT (1).

Typ prostorových dat

MySQL poskytuje podporu pro několik typů prostorových dat, které mají různé druhy geografických a geometrických hodnot, jak je uvedeno níže:

GEOMETRIE: Jedná se o agregát nebo bod, který může obsahovat prostorovou hodnotu jakéhokoli typu, pokud mají umístění.

POLYGON: Jedná se o rovinnou plochu reprezentovanou vícestrannou geometrií. Může být definován buď nulou, nebo pouze jedním vnějším a více vnitřními hranicemi.

MULTILINESTRING: Toto je geometrie s více křivkami, která obsahuje kolekci hodnot LINESTRING.

MULTIPOLYGON: Toto je objekt s více povrchy reprezentovaný sbírkou několika polygonových prvků a je to dvourozměrná geometrie

BOD: Jedná se o bod nebo dvojici, která obsahuje souřadnice X a Y. Dá se říci, že jde o bod v geometrii, který představuje jedno místo.

GEOMETRYCOLLECTION: Toto je sbírka hodnot GEOMETRY

LINESTRING: Toto je křivka, která obsahuje jednu nebo více bodových hodnot. V případech, kdy čárový řetězec obsahuje pouze dva body, znamená to, že představuje čáru.

VÍCEBODOVÝ: Toto je sbírka hodnot POINT, přičemž bod nelze žádným způsobem seřadit ani spojit.

Datový typ JSON

MYSQL podporuje nativní datový typ JSON od počátku verze 5.7.8, což umožnilo ukládání a správu dokumentů JSON mnohem rychle a efektivně. Kromě toho je nativní datový typ JSON zodpovědný za poskytování optimálního formátu úložiště a automatické ověřování dokumentů JSON.

Závěr

Tento článek komplexně pokrývá všechny aspekty týkající se datových typů MySQL, které vám pomohou porozumět tomu, které datové typy by se měly používat a jak by se měly používat. Věříme, že článek také pomůže zlepšit vaše znalosti MySQL.


  1. SQL*Plus nespouští skripty SQL, které provádí SQL Developer

  2. Databáze SQLite poskytuje varovný automatický index na <název_tabulky> (sloupec) Po upgradu systému Android L

  3. Ekvivalentní funkce pro DATEADD() v Oracle

  4. Rozdíl mezi těmito dvěma přístupy ke spojovací tabulce?