Poprzednio tworzyliśmy podstawowe zapytania w MySQL. Było sporo mięsa dla początkujących i wierzę, że poradziliście sobie super! Tworząc tabelę, określaliśmy jakiego typu będą poszczególne kolumny. Dziś zgłębimy ten temat bardziej omawiając typy danych w MySQL.
Typy danych w MySQL
Numeryczne typy danych w MySQL
Nazwa | Opis |
---|---|
TINYINT | 1-bajtowe pole, przechowujące wartości całkowite bez znaku z przedziału od 0 do 255 lub ze znakiem z przedziału od -127 do 127 |
BOOL | 1-bajtowe pole logiczne, zakres True (true != 0) oraz False (false == 0) |
BOOLEAN | |
SMALLINT | 2-bajtowa wartość całkowita. Zakres wartości bez znaku od 0 do 65 535 lub ze znakiem od -32 768 do 32 768 |
MEDIUMINT | 3-bajtowa wartość całkowita. Zakres wartości od 0 do 16 777 215 lub ze znakiem od -8 388 608 do 8 388 608 |
INT | 4-bajtowa wartość całkowita. Zakres wartości ze znakiem od -2 147 483 648 do 2 147 483 647 lub bez znaku od 0 do 4 294 967 295 |
INTEGER | |
BIGINT | 8-bajtowa wartość całkowita. Typ BIGINT jest używany podczas przeprowadzania obliczeń. Stosując pola tego typu we własnej bazie danych należy uważać, aby ich wartości nie były zbyt duże, ponieważ użyte w obliczeniach mogą doprowadzić do błędu przepełnienia |
FLOAT(M,D) | 4-bajtowa liczba zmiennoprzecinkowa z zakresu od -1.402823466E+38 do -1.175494351E-38, 0 i 1.175494351E-38 do 3.402823466E+38 |
DOUBLE PRECISION(M,D) | 8-bajtowa liczba zmiennoprzecinkowa przechowująca wartości z zakresu od -1.7976931348623157E+308 do -2.2250738585072014E-308, 0, i 2.2250738585072014E-308 do 1.7976931348623157E+308 |
DECIMAL(M,D) | Pole zmiennoprzecinkowe o takiej samej pojemności jak DOUBLE. Liczba, zamiast zostać zredukowana do postaci szesnastkowej, pamiętana jest w formacie znakowym |
DEC | |
NUMERIC | Typ danych podobny do decimal ale bardziej precyzyjny. Jeżeli podamy 4 miejsca decymalne, pole musi przechować 4 miejsca decymalne |
Typy daty i czasy w MySQL
Nazwa | Opis |
---|---|
DATE | Data (bez czasu), wyświetlana w formacie RRRR-MM-DD. Akceptuje daty w różnych formatach z zakresu od 1000-01-01 do 9999-12-31 |
DATETIME | Pole daty z czasem dnia wyświetlane według formatu RRRR-MM-DD GG:MM:SS. Może przechowywać wartości z zakresu od 1000-01-01 00:00:00 do 9999-12-31 23:59:59 |
TIMESTAMP | Data i czas liczony od początku epoki systemu UNIX, 1970-01-01 00:00:00, do momentu kiedy 32-bitowe pole przechowujące liczbę sekund, jaka upłynęła od tej daty ulegnie przepełnieniu w roku 2037. Jeśli polu temu nie została nadana wartość przez wyrażenie INSERT lub UPDATE, domyślnie otrzyma ono wartość daty bieżącej |
TIME | Czas mieszczący się w przedziale od -838:59:59 do 838:59:59 |
YEAR | Rok. Dozwolone wartości to przedział od 1901 do 2155 oraz wartość 0000. MySQL wyświetla wartość typu YEAR w formacie RRRR |
Tekstowe / znakowe typy danych w MySQL
Nazwa | Opis |
---|---|
CHAR[(M)] | Pole znakowe o stałej długości z zakresu od 1 do 255 bajtów. Po wstawieniu wartości puste miejsca pola CHAR są uzupełniane z prawej strony spacjami |
VARCHAR(M) | Pole znakowe o zmiennej długości z zakresu od 1 do 255 bajtów. Zajmowany jest jedynie taki obszar pamięci, jakiego wymaga wartość wstawiona w to pole |
BINARY(M) | Typ odpowiadający CHAR ale przechowujący wartości binarne |
VARBINARY(M) | Typ odpowiadający VARCHAR ale przechowujący wartości binarne. |
TINYBLOB | Kolumna binarna lub tekstowa o rozmiarze nie przekraczającym 255 bajtów |
TINYTEXT | |
BLOB | Kolumna binarna lub tekstowa o rozmiarze nie przekraczającym 65 535 bajtów |
TEXT | |
MEDIUMBLOB | Kolumna binarna lub tekstowa o rozmiarze nie przekraczającym 16 777 215 bajtów |
MEDIUMTEXT | |
LONGBLOB | Kolumna binarna lub tekstowa o rozmiarze nie przekraczającym 4 294 967 295 bajtów |
LONGTEXT | |
ENUM(‚value1’, ‚value2’, …) | Kolumna łańcuchowa, która może zawierać jedną z wartości wymienionych na liście wartości w definicji tej kolumny |
SET(‘elem1’, ‘elem2’, …) | Kolumna łańcuchowa, która może zawierać dowolną liczbę wartości spośród wartości występujących na liście w definicji tej kolumny |
Atrybuty w MySQL
UNSIGNED
Informujemy bazę, że będziemy przechowywać tylko wartości dodatnie. Analogicznie SIGNED informuje, że będziemy przechowywać również ujemne.
ZEROFILL
Liczby zapisane w kolumnie zostaną poprzedzone zerami jeśli ich długość jest krótsza niż zdefiniowana. Jednocześnie liczby te zawsze będą dodatnie
AUTO INCREMENT
Służy do generowania unikalnej wartości liczbowej dla nowych wierszy.
NULL / NOT NULL
Informujemy bazę czy pole musi być uzupełnione czy dopuszczamy by nie zawierało wartości