Wprowadzenie

Typy danych w języku SQL to atrybuty określające typ danych dowolnego obiektu. W poprzednim wpisie mogliście zobaczyć sposób tworzenia nowej tabeli:

CREATE TABLE nazwa_tabeli(
Kolumna1 typ_kolumny,
Kolumna2 typ_kolumny,
... ...
KolumnaN typ_kolumny,
PRIMARY KEY (kolumna lub kilka kolumn celem utworzenia klucza kompozytowego));

W powyższym przypadku definiowaliśmy kolumny oraz różne typy danych. W zależności od potrzeb kolumny mogłyby być zdefiniowane jako pole liczbowe, tekstowe, przechowujące datę urodzenia lub inne z dostępnych. Naszym obiektem zainteresowania są jednak nie tylko kolumny. Typy danych są również zdefiniowane dla zmiennych oraz wyrażeń.

W języku SQL możemy spotkać się siedmioma kategoriami typów danych:

  • typ numeryczny dokładny;
  • typ numeryczny przybliżony;
  • typ daty i godziny;
  • łańcuch znaków;
  • łańcuch znaków w systemie Unicode;
  • typ binarny;
  • inne typy danych, które nie kwalifikują się do powyższych kategorii.

Poniżej omówimy składowe poszczególnych typów.

Typ numeryczny dokładny

Typ Zakres
bigint -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807
int -2,147,483,648 - 2,147,483,647
smallint -32,768 - 32,767
tinyint 0 - 255
bit 0 - 1
decimal, numeric -1038 +1 - 1038 -1
money -922,337,203,685,477.5808 - 922,337,203,685,477.5807
smallmoney -214,748.3648 - 214,748.3647


Typ numeryczny przybliżony

Typ Zakres
float -1.79E + 308 - 1.79E + 308
real -3.40E + 38 - 3.40E + 38


Typ daty i godziny

Typ Zakres
datetime 1 Stycznia 1753 - 31 Grudnia 9999
smalldatetime 1 Stycznia 1900 - 6 Czerwca 2079
date Domyślnym formatem jest: YYYY-MM-DD. Domyślna wartość to 1900-01-01
time Czas dnia w formacie 15:30 P.M.


Łańcuch znaków

Typ Zakres
char 1 – 8000 znaków (typ stało-znakowy)
varchar 1 – 8000 znaków (typ zmienno-znakowy)
text Maksymalna długość wynosi 2.147.483.647 znaków.

Tutaj musimy pamiętać, że powyższe typy danych nie pozwalają na przechowywanie zestawu znaków Unicode. Jeżeli zależy nam na poprawnym ich zapisie musimy wykorzystać nchar, nvarchar lub ntext mając na uwadze, że maksymalny zakres jest pomniejszony w połowę.


Typ binarny

Typ Zakres
binary Maksymalna długość to 8000 bajtów (stały strumień bajtów)
varbinary Maksymalna długość to 8000 bajtów (zmienny strumień bajtów)
image Maksymalna długość to 2,147,483,647 bajtów


Inne typy danych

Typ Zakres
sql_variant Odpowiednik var w języku C#. Pozwala na przechowywanie różnych typów obsługiwanych przez język SQL.
timestamp Przechowuje unikalny numer/liczbę binarną dla całej bazy danych. Automatycznie aktualizowany w momencie aktualizacji danego wiersza.
uniqueidentifier Przechowuje unikalny identyfikator, tzw. GUID.
cursor Referencja do obiektu kursora, tj. typ danych dla parametrów wyjściowych procedury.
table Przechowuje zestaw wyników, który może zostać wykorzystany do dalszej obróbki. Typ ten znajduje swoje zastosowanie np. w przypadku transakcji – powiemy o tym na nieco późniejszym etapie.


Podsumowanie

Przed nami jeszcze oparatory i wyrażenia. Później przejdziemy do najważniejszego – praktyki