Wprowadzenie do typów danych SQL

Typy danych w SQL, podobnie jak każdy inny język programowania, określają, jaki typ danych może przechowywać kolumna lub zmienna. Typ danych może być dowolny, od znaku, poprzez serię znaków, liczby, aż do daty i godziny. Typ danych to bardzo ważna koncepcja ściśle powiązanego programowania. Pomaga rozwiązać większość błędów zgodności typów podczas kompilacji programu.

Ogólnie kategoryzowalibyśmy typy danych SQL, a następnie badaliśmy różne typy i przykłady w tych kategoriach.

Uwaga - nie wszystkie systemy zarządzania bazami danych obsługują wszystkie typy danych. Na przykład Oracle nie obsługuje DateTime. Te szczegóły podano wraz z opisem typu danych w artykule. Podczas projektowania bazy danych należy o tym pamiętać. Podobnie istnieje wiele innych typów danych, które są specyficzne dla każdego konkretnego systemu zarządzania bazą danych. Na przykład MS SQL ma typ danych pieniężnych. Takie typy nie są ogólne i wykraczają poza zakres tego artykułu.

Rodzaje danych SQL

1. Binarny

Binarny typ danych zawiera sekwencję ciągów bajtów binarnych. W przeciwieństwie do zwykłych ciągów znaków, ciągi binarne służą do przechowywania niekonwencjonalnych danych, takich jak obrazy.

Binary (size): Przechowuje binarne ciągi bajtów o długości kolumny określonej przez parametr size. Rozmiar kolumny jest stały. Jeśli rozmiar jest zdefiniowany jako 10 bajtów, a przechowywane dane to 5 bajtów, pozostałe 5 bajtów jest nadal zajmowanych w pamięci przez kolumnę. Te pozostałe bajty są zerowane po prawej stronie przez większość parserów SQL. Maksymalny możliwy rozmiar to 8000 bajtów.

Varbinary (size): Przechowuje binarne ciągi bajtów o długości kolumny określonej przez parametr size. Rozmiar kolumny nie jest ustalony. Jeśli rozmiar jest zdefiniowany jako 10 bajtów, a przechowywane dane to 5 bajtów, kolumna zajmuje tylko 5 bajtów w pamięci. Maksymalny możliwy rozmiar to 8000 bajtów.

Varbinary (max): Podanie słowa kluczowego max w parametrze size zwiększa maksymalny możliwy rozmiar do 2 GB i przydziela zmienny rozmiar do kolumn na podstawie przechowywanych danych. Ten typ danych nie jest obsługiwany przez MySQL.

Przykład:

create table BinaryDataTypes (col_binary BINARY(5), col_varbinary VARBINARY(5));
insert into BinaryDataTypes values (101, 121);
select * from BinaryDataTypes;

insert into BinaryDataTypes values (12345, 123456);
insert into BinaryDataTypes values (123456, 123456);

Błąd występuje, ponieważ zdefiniowaliśmy rozmiar kolumn tylko jako 5 bajtów.

2. Znak / ciąg

Te typy danych przechowują pojedynczy znak lub ciąg znaków tworzących ciąg. Obejmują one znaki, cyfry i znaki specjalne. Charakter znaku (znaków) jest jednak ograniczony tylko do znaków innych niż Unicode.

Char (rozmiar): Przechowuje ciągi znaków o stałej długości o długości określonej parametrem size. Rozmiar kolumny działa podobnie jak typ danych BINARY. Domyślny rozmiar to 1 znak. Maksymalnie wynosi 255 w większości systemów zarządzania bazami danych.

Varchar (rozmiar): Przechowuje ciągi znaków o zmiennej długości. Jednak długość określona przez parametr size określa maksymalną długość kolumny. Maksymalna możliwa długość wynosi 65535 znaków.

Varchar (max): Podanie słowa kluczowego max w parametrze size zwiększa maksymalny możliwy rozmiar do 2 GB i przydziela zmienny rozmiar do kolumn na podstawie przechowywanych danych. Ten typ danych nie jest obsługiwany przez MySQL.

Tekst: MySQL obsługuje typ danych tekstowych zamiast varchar (maks.). Tekst zwiększa również maksymalny możliwy rozmiar do 2 GB.

Przykład:

create table CharacterDataTypes (col_char CHAR(300));

create table CharacterDataTypes (col_char CHAR(20), col_varchar VARCHAR(20), col_text TEXT);
insert into CharacterDataTypes values ('Hello World', 'How you doing?', 'This is an incredibly longer text to demonstrate the data type text in MySQL. The data type text makes it possible to store 2GB of data in a column. That\'s equal to 2*1024*1024*1024 = over 2.14 billion characters. Whoa!');

3. Znak / ciąg Unicode

Te typy danych przechowują pojedynczy lub ciąg znaków Unicode.

Nchar (rozmiar): Jest podobny do typu danych char i obsługuje również znaki Unicode. Maksymalny limit jest jednak zredukowany do 4000 bajtów.

Nvarchar (rozmiar): Jest podobny do typu danych nvarchar i obsługuje również znaki Unicode. Maksymalny limit jest jednak zredukowany do 4000 bajtów.

Nvarchar (max): Podanie słowa kluczowego max w parametrze size zwiększa maksymalny możliwy rozmiar do 1 GB i przydziela zmienny rozmiar do kolumn na podstawie przechowywanych danych. Ten typ danych nie jest obsługiwany przez MySQL.

Ntext: MySQL obsługuje typ danych ntext zamiast nvarchar (max). Ntext zwiększa również maksymalny możliwy rozmiar do 1 GB.

Przykład:

create table UnicodeCharacterDataTypes (col_unicode_char NCHAR(200));
insert into UnicodeCharacterDataTypes values ('局层局层');
select * from UnicodeCharacterDataTypes;

4. Numeryczny

Numeryczne typy danych obsługują liczby całkowite oraz liczby rzeczywiste / ułamkowe / dziesiętne.

Bit / Bool / Boolean: Te typy danych przechowują tylko dwie wartości - 0 i 1. 0 oznacza fałsz, a 1 oznacza prawda. Trochę obsługiwanych jest przez większość baz danych. Niektóre zaawansowane bazy danych obsługują również logiczne i logiczne.

INT: Przechowuje dodatnie i ujemne liczby całkowite do 4 bajtów. Oznacza to, że wartość musi mieścić się w zakresie (-2147483648, 2147483647). Podanie słowa kluczowego bez znaku ogranicza kolumnę do przechowywania tylko dodatnich wartości w zakresie (0, 4294967295).

TINYINT: Przechowuje dodatnie i ujemne liczby całkowite o wielkości do 1 Byte. Oznacza to, że wartość musi mieścić się w zakresie (-128, 127). Podanie słowa kluczowego bez znaku ogranicza kolumnę do przechowywania tylko dodatnich wartości w zakresie (0, 255).

Smallint: Przechowuje dodatnie i ujemne liczby całkowite do 2 bajtów. Oznacza to, że wartość musi mieścić się w zakresie (-32768, 32767). Podanie słowa kluczowego bez znaku ogranicza kolumnę do przechowywania tylko dodatnich wartości w zakresie (0, 65535).

Bigint: Przechowuje dodatnie i ujemne liczby całkowite do 8 bajtów. Oznacza to, że wartość musi mieścić się w zakresie (-2 63, 2 63 -1). Podanie słowa kluczowego bez znaku ogranicza kolumnę do przechowywania tylko dodatnich wartości w zakresie (0, 2 64 -1).

Dziesiętny (rozmiar, D): Przechowuje liczbę w punkcie stałym. Rozmiar parametru określa całkowitą liczbę cyfr, podczas gdy d określa liczbę cyfr po przecinku. Domyślne wartości rozmiaru id to odpowiednio 10 i 0.

Liczba zmiennoprzecinkowa (rozmiar, D) / Double (rozmiar, D): Przechowuje liczbę zmiennoprzecinkową. Liczba zmiennoprzecinkowa jest używana dla mniejszych liczb do 4 bajtów. Podwójnie przechowuje większe liczby. Jednak podwójne nie jest obsługiwane przez wszystkie bazy danych.

Wiedza pozaplanowa - Różnica między liczbami stałoprzecinkowymi i zmiennoprzecinkowymi polega na tym, że przecinek dziesiętny jest ustalony w jednym, a zmienny w drugim. Punkt stały oznacza, że ​​liczba cyfr jest ustalana po przecinku i przed nim. Liczba zmiennoprzecinkowa oznacza, że ​​liczba cyfr przed i po przecinku może się różnić w zależności od znaczenia cyfr w liczbie.

Przykład:

create table NumericDataTypes (col_tinyint_u TINYINT UNSIGNED, col_smallint SMALLINT, col_int INT, col_bigint BIGINT UNSIGNED, col_decimal DECIMAL(5, 2), col_float FLOAT);
insert into NumericDataTypes values (255, -32768, 1234567890, (POWER(2, 63)-1), 987.65, 987.65);

5. Data i godzina

  1. Data: Przechowuje dane w formacie RRRR-MM-DD, ograniczone od 1000-01-01 do 9999-12-31.
  2. Czas: Przechowuje czas w formacie gg: mm: ss.
  3. DateTime: Przechowuje zarówno datę, jak i godzinę.
  4. Znacznik czasu : Znacznik czasu służy do oznaczania znacznika czasu za każdym razem, gdy wiersz jest wprowadzany lub aktualizowany w tabeli. Zazwyczaj odbywa się to za pomocą słów kluczowych DEFAULT CURRENT_TIMESTAMP i ON UPDATE CURRENT_TIMESTAMP.

Przykład:

create table DateTimeDataTypes (col_date DATE, col_time TIME, col_datetime DATETIME, col_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
insert into DateTimeDataTypes(col_date, col_time, col_datetime) values (CURDATE(), '08:50:41', NOW());

6. Różne typy danych SQL

  • CLOB: CLOB oznacza postać dużych obiektów. Mogą przechowywać dane o znakach do 2 GB. Jednak nie obsługiwany przez MySQL. MySQL używa tekstu, aby osiągnąć to samo.
  • BLOB: BLOB oznacza duże binarne obiekty. Służą do przechowywania obiektów binarnych o wielkości do 2 GB. Zwykle obrazy są konwertowane na obiekty binarne i przechowywane w kolumnach BLOB.
  • XML: Używany do przechowywania danych XML.
  • JSON: Używany do przechowywania danych JSON. Nieobsługiwany przez MySQL.

Wniosek - typy danych SQL

Typy danych SQL bardzo pomagają w strategicznej optymalizacji przestrzeni bazy danych. W cyfrowym świecie, w którym dane stale rosną w tempie wykładniczym, programista musi mądrze wybrać typ dla każdego kawałka danych. Pomaga to w obniżeniu kosztów wynikających z masowego przechowywania danych.

Polecane artykuły

Jest to przewodnik po typach danych SQL. Tutaj omawiamy Wprowadzenie, Rodzaje danych SQL, Znak / ciąg, Znak / ciąg Unicode i Numeryczne. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Typy danych PostgreSQL
  2. Rodzaje OLAP
  3. Rodzaje złośliwego oprogramowania
  4. Klauzula SQL GDZIE
  5. Słowa kluczowe PHP
  6. C ++ Słowa kluczowe
  7. Top 3 typy danych PHP z przykładami
  8. Przykłady implementacji instrukcji INSERT