Podsumowanie: W tym poradniku poznasz typ danych MySQL INT
lub typ integer oraz dowiesz się jak używać go w projektowaniu tabel bazy danych. Dodatkowo pokażemy jak używać atrybutów display width oraz ZEROFILL dla kolumny integer.
Wprowadzenie do MySQL typ INT
W MySQL, INT
oznacza liczbę całkowitą, która jest liczbą całkowitą. Liczba całkowita może być zapisana bez składnika ułamkowego np. 1, 100, 4, -10, natomiast nie może być 1.2, 5/3 itd. Liczba całkowita może być zerem, może być dodatnia lub ujemna.
MySQL obsługuje wszystkie standardowe typy liczb całkowitych SQL INTEGER
lub INT
i SMALLINT
. Dodatkowo MySQL udostępnia TINYINT
MEDIUMINT
oraz BIGINT
jako rozszerzenia standardu SQL.
Typ danych MySQL INT
może być podpisany lub niepodpisany. Poniższa tabela przedstawia właściwości każdego typu całkowitego, w tym przechowywanie w bajtach, wartość minimalną oraz wartość maksymalną.
Typ | Przechowywanie | Wartość minimalna | Wartość maksymalna |
---|---|---|---|
(Bytes) | (Signed/Unsigned) | (Signed/Unsigned) | |
TINYINT | 1 | -.128 | 127 |
0 | 255 | ||
SMALLINT | 2 | -.32768 | 32767 |
0 | 65535 | ||
MEDIUMINT | 3 | -.8388608 | 8388607 |
0 | 16777215 | ||
INT | 4 | -.2147483648 | 2147483647 |
0 | 4294967295 | ||
BIGINT | 8 | -.9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
Przykłady użycia typu danych MySQL INT
Przyjrzyjrzyjmy się kilku przykładom użycia typu danych integer.
A) Przykład użycia MySQL INT dla kolumny
Ponieważ typ integer reprezentuje dokładne liczby, zazwyczaj używasz go jako klucz główny tabeli. Ponadto kolumna INT
może mieć atrybut AUTO_INCREMENT
.
Gdy wstawisz wartość NULL
lub 0 do kolumny INT AUTO_INCREMENT
, wartość kolumny zostanie ustawiona na następną wartość sekwencyjną. Zauważ, że wartość sekwencji zaczyna się od 1.
Gdy wstawisz wartość, która nie jest NULL
lub zero, do kolumny AUTO_INCREMENT
, kolumna przyjmuje tę wartość. Ponadto sekwencja jest resetowana do następnej wartości wstawionej wartości.
Na początku utwórz nową tabelę o nazwie items
z kolumną integer jako kluczem głównym:
Code language: SQL (Structured Query Language) (sql)
Możesz użyć albo INT
, albo INTEGER
w powyższej instrukcji CREATE TABLE
, ponieważ są one wymienne. Za każdym razem, gdy wstawiasz nowy wiersz do tabeli items
, wartość kolumny item_id
jest zwiększana o 1.
Następnie, następująca instrukcja INSERT
wstawia trzy wiersze do tabeli items
.
Code language: SQL (Structured Query Language) (sql)
Następnie odpytaj dane z tabeli items
za pomocą następującej instrukcji SELECT
:
Code language: SQL (Structured Query Language) (sql)
Potem wstaw nowy wiersz, którego wartość kolumny item_id
jest określona jawnie.
Code language: SQL (Structured Query Language) (sql)
Ponieważ aktualna wartość kolumny item_id
wynosi 10, sekwencja jest resetowana do 11. Jeśli wstawisz nowy wiersz, kolumna AUTO_INCREMENT
użyje 11 jako następnej wartości.
Code language: SQL (Structured Query Language) (sql)
Na koniec ponownie odpytaj dane tabeli items
, aby zobaczyć wynik.
Code language: SQL (Structured Query Language) (sql)
Zauważ, że począwszy od MySQL 5.1, kolumna AUTO_INCREMENT
akceptuje tylko wartości dodatnie i nie dopuszcza wartości ujemnych.
B) Korzystanie z MySQL INT UNSIGNED przykład
Po pierwsze, utwórz tabelę o nazwie classes
, która ma kolumnę total_member
z typem danych unsigned integer:
Code language: SQL (Structured Query Language) (sql)
Po drugie, wstaw nowy wiersz do tabeli classes
:
Code language: SQL (Structured Query Language) (sql)
Działało zgodnie z oczekiwaniami.
Po trzecie, próba wstawienia wartości ujemnej do kolumny total_member
:
Code language: SQL (Structured Query Language) (sql)
MySQL wypisał następujący błąd:
Code language: SQL (Structured Query Language) (sql)
MySQL INT z atrybutem display width
MySQL udostępnia rozszerzenie, które pozwala określić szerokość wyświetlania wraz z typem danych INT
. Na przykład INT(5)
określa INT
o szerokości wyświetlania pięciu cyfr.
Należy pamiętać, że atrybut szerokości wyświetlania nie kontroluje zakresu wartości, które kolumna może przechowywać. Atrybut szerokości wyświetlania jest zazwyczaj używany przez aplikacje do formatowania wartości całkowitych. MySQL zawiera atrybut szerokości wyświetlania jako metadane zwracanego zestawu wyników.
MySQL INT z atrybutem ZEROFILL
Oprócz atrybutu szerokości wyświetlania, MySQL udostępnia niestandardowy atrybut ZEROFILL
. W tym przypadku MySQL zastępuje spacje zerem. Rozważmy następujący przykład.
Po pierwsze, utwórz tabelę o nazwie zerofill_tests
:
Code language: SQL (Structured Query Language) (sql)
Po drugie, wstaw nowy wiersz do tabeli zerofill_tests
.
Code language: SQL (Structured Query Language) (sql)
Po trzecie, wypytaj o dane z tabeli zerofill_tests
.
Code language: SQL (Structured Query Language) (sql)
Kolumnav1
ma szerokość wyświetlania 2 obejmującąZEROFILL.
Jej wartość wynosi 1, dlatego na wyjściu widzisz01
. MySQL zastępuje pierwszą spację przez 0.
Kolumna v2 ma szerokość wyświetlania 3, w tym ZEROFILL
. Jej wartość wynosi 6, dlatego na wyjściu widzisz 00
jako zera wiodące.
Kolumna v3 ma szerokość wyświetlania 5 z ZEROFILL
, podczas gdy jej wartość wynosi 9, dlatego MySQL wstawia 0000
na początku liczby.
Zauważ, że jeśli użyjesz atrybutu ZEROFILL
dla kolumny integer, MySQL automatycznie doda atrybut UNSIGNED
do kolumny.
W tym samouczku nauczyłeś się używać typu danych MySQL INT
do projektowania tabel bazy danych.
- Czy ten poradnik był pomocny?
- TakNie
.