Encyklopedia SQL - Typy danych T-SQL
Autor: Paweł Wilkosz
Opublikowano: 2012-01-31
Niniejsza publikacja koncentrować się będzie na typach danych, jakie oferuje T-SQL. Ich znajomość jest niezwykle istotna w kontekście nie tylko codziennej pracy z bazami danych, ale również w procesie projektowania tabel, obiektów, procedur składowanych oraz innych elementów, które operują bezpośrednio na prymitywach i skalarach.
Przed wykonaniem zadań zapoznaj się z następującym materiałem:
Po wykonaniu zadań będziesz wiedział:
- jakie typy danych dla kolumn oraz skalarnych wartości oferuje język T-SQL.
Typy danych T-SQL
Język T-SQL, mimo iż należy do klasy języków deklaratywnych, podobnie jak inne języki wysokiego poziomu (np. C#), rozpoznaje i klasyfikuje dane na podstawie typów. W poniższych tabelach zostały przedstawione wszystkie typy, wykorzystywane przez SQL Server, wraz z podstawową klasyfikacją.
Typy numeryczne
Do wartości numerycznych zalicza się typy przedstawione w Tabeli 1.
Tabela 1. Typy numeryczne w T-SQL.
Typ | Opis |
Bigint | 8-bajtowy typ numeryczny z zakresem: -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807). |
Numeric | Wielkość typu zależy od precyzji. 1-9 – 5 bajtów, 10-19 – 9 bajtów, 20-28 – 13 bajtów, 29-38 – 17 bajtów. |
bit | Wartości: 0, 1 lub NULL. |
smallint | 2-bajtowy typ numeryczny z zakresem: -2^15 (-32,768) do 2^15-1 (32,767). |
decimal | Wielkość typu zależy od precyzji. 1-9 – 5 bajtów, 10-19 – 9 bajtów, 20-28 – 13 bajtów, 29-38 – 17 bajtów. |
smallmoney | 4-bajtowy typ do zapisu walut z zakresem: - 214,748.3648 do 214,748.3647. |
int | 4-bajtowy typ numeryczny z zakresem: -2^31 (-2,147,483,648) do 2^31-1 (2,147,483,647). |
tinyint | 1-bajtowy typ numeryczny z zakresem: 0 – 255. |
money | 8-bajtowy typ do zapisu walut z zakresem: -922,337,203,685,477.5808 do 922,337,203,685,477.5807. |
float | Typ zmiennoprzecinkowy z zakresem: - 1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308. Ilość bajtów zależy od precyzji. 1-24 – 4 bajty (7 cyfr), 25-53 – 8 bajtów (15 cyfr). |
real | 4-bajtowy typ zmiennoprzecinkowy z zakresem: - 3.40E + 38 to -1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38. Typ real jest 24-cyfrowym typem float. |
Data i czas
Dane zapisywane jako data i czas powinny zostać zaprezentowane za pomocą typów przedstawionych w Tabeli 2.
Tabela 2. Typy daty i czasu w T-SQL.
Typ | Opis |
date | 10-znakowy typ zapisu daty z precyzją: 10.0. Domyślnym formatem jest: YYYY-MM-DD, natomiast domyślna wartość to 1900-01-01 (używana jako niejawna konwersja time do typu datetime2 albo datetimeoffset). |
datetimeoffset | 8-bajtowy typ do zapisu daty z zakresu: 1 stycznia 1 roku n.e. do 31 grudnia roku 9999, liczone wg kalendarza gregoriańskiego oraz czas 24-godzinny z dokładnością do 100 ns. Uwzględnia przesunięcie strefy czasowej. |
datetime2 | 8-bajtowy typ do zapisu daty z zakresu: 1 stycznia 1 roku n.e. do 31 grudnia 9999 oraz czas 24-godzinny z dokładnością do 100 ns. |
smalldatetime | 4-bajtowy typ do zapisu daty z zakresu 1900-01-01 do 2076-06-06 z dokładnością do 1 minuty. |
datetime | 8-bajtowy typ do zapisu daty z zakresu 1 stycznia 1753 do 31 grudnia 9999 z dokładnością do 0.00333 sekund. |
time | 3 – 5-bajtowy typ do zapisu czasu z dokładnością do 100 ns. Ilość bajtów zależy od skali precyzji. |
Typ znakowy
Do wartości znakowych zalicza się typy przedstawione w Tabeli 3.
Tabela 3. Typy znakowe w T-SQL.
Typ | Opis. |
char | Stało-znakowy typ o wielkości 1 – 8000 bajtów. |
text | Zmienno-znakowy typ o długości max. 2^30 – 1 bajtów. |
varchar | Zmienno-znakowy typ o długości 1 – 8000 bajtów. |
nchar | Stało-znakowy typ Unicode o wielkości 1 – 4000 bajtów. |
nvarchar | Zmienno-znakowy typ Unicode o wielkości 1 – 4000 bajtów. |
ntext | Zmienno-znakowy typ Unicode o wielkości max. 2^30 – 1 bajtów. |
Typy binarne
Do wartości binarnych zalicza typy przedstawione w Tabeli 4.
Tabela 4. Typy binarne.
Typ | Opis. |
binary | Przechowywany najczęściej jako stały strumień bajtów typ o wielkości 1 – 8000 bajtów. |
varbinary | Przechowywany najczęściej jako zmienny strumień bajtów typ o wielkości 1 – 8000 bajtów. |
image | Zmienno-bajtowy typ o długości 0 – 2^31 – 1, przeznaczony do składowania obrazów w bazie danych. |
Typy przestrzenne
SQL Server oferuje typy do reprezentowania obiektów geometrycznych i geograficznych (Tabela 5.)
Tabela 5. Typ geography i geometry.
Typ | Opis. |
geography | Typ do przechowywania danych geograficznych, zaimplementowany w .NET CLR. Wykorzystywany jest głównie do zapisu pozycji GPS. Uwzględnia krzywiznę Ziemi. |
geometry | Typ do przechowywania typów geometrycznych (w szczególności figur), zaimplementowany w .NET CLR. |
Pozostałe typy
Pozostałe typy zostały przedstawione w Tabeli 6.
Tabela 6. Pozostałe typy danych.
Typ | Opis |
cursor | Typ danych dla zmiennych parametrów wyjściowych procedury, które zawierają doniesienie do kursora. |
hierarchyid | Typ o zmiennej długości danych, służący do reprezentowania pozycji danej informacji w hierarchii. |
sql_variant | Typ danych, przechowujący różne wartości typów obsługiwanych przez SQL Server. Jest odpowiednikiem typu var w języku C#. |
table | Typ tabelaryczny. |
uniqueidentifier | Typ umożliwiający automatyczne generowanie unikalnych liczb binarnych w bazie danych. |
xml | Typ XML-owy. |
Informacja |
Zapamiętaj, że:
|
Podsumowanie
Niniejsza publikacja w sposób szczegółowy opisuje typy danych, z którymi możesz się spotkać podczas pracy z SQL Server. Ich odpowiedni dobór jest niezwykle istotny w procesie projektowania baz danych, jak i również manipulowania na informacjach składowanych w tabelach.
W kolejnej publikacji nauczysz się tworzyć tabele.
Dodatkowo zobacz: