TYPY DANYCH W MsSQL SERVER
br>
Temat ten jest bardzo istotny z perspektywy projektowania struktur bazodanowych i koniecznie trzeba go dokładnie poznać, aby nauczyć się prawidłowego wykorzystywania wiedzy na tym poziomie.
To, jakie typy danych będziemy wykorzystywać i w jaki sposób ma wpływ na wiele aspektów:
● używane miejsce
● potencjalne błędy, problemy i anomalia
● szybkość wykonywania operacji na tych danych.
Jest to oczywiście jeden z wielu tematów, na który trzeba zwrócić szczególną uwagę, o czym dowiesz się w kolejnych wpisach.
O niektórych typach danych chcę w tym miejscu tylko poinformować, że takowe typy danych istnieją, jednak zakres wiedzy zdecydowanie wykracza poza ten wpis. W pełnych wersjach kursów są one oczywiście szczegółowo opracowane:
● CURSOR
● HIERARCHYID
● SQL_VARIANT
● TABLE
● XML
Poniższa tabela przedstawia wszystkie typy danych obsługiwane i przestarzałe, jakie są/były dostępne w Microsoft SQL Server:
Numeryczne dokładne: |
|
BIGINT | 8-bajtowy typ numeryczny w zakresie od: -263 (-9,223,372,036,854,775,808) do 263-1 (9,223,372,036,854,775,807). |
BIT | Wartości: 0, 1 lub NULL. |
DECIMAL NUMERIC |
Wielkość typu zależy od określonej przez użytkownika precyzji: 1-9: 5 bajtów, 10-19: 9 bajtów, 20-28: 13 bajtów, 29-38: 17 bajtów. |
INT | 4-bajtowy typ numeryczny w zakresie od: -231 (-2,147,483,648) do 231-1 (2,147,483,647). |
MONEY | 8-bajtowy typ do zapisu walut w zakresie od: -922,337,203,685,477.5808 do 922,337,203,685,477.5807. |
SMALLINT | 2-bajtowy typ numeryczny w zakresie od: -215 (-32,768) do 215-1 (32,767). |
SMALLMONEY | 4-bajtowy typ do zapisu walut w zakresie od: – 214,748.3648 do 214,748.3647. |
TINYINT | 1-bajtowy typ numeryczny w zakresie od: 0 do 255. |
Numeryczne przybliżone: |
|
FLOAT | Typ zmiennoprzecinkowy w zakresie od: – 1.79E+308 do -2.23E-308, 0 i od 2.23E-308 do 1.79E+308 Ilość bajtów zależy od określonej przez użytkownika precyzji: 1-24: 4 bajty (7 cyfr), 25-53: 8 bajtów (15 cyfr). |
REAL | 4-bajtowy typ zmiennoprzecinkowy w zakresie od: – 3.40E + 38 do -1.18E – 38, 0 i od 1.18E – 38 do 3.40E + 38. Typ REAL jest 24-cyfrowym typem FLOAT. |
Data i godzina: |
|
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) . |
DATETIME | 8-bajtowy typ do zapisu daty z zakresu 1 stycznia 1753 do 31 grudnia 9999 z dokładnością do 0.00333 sekund. |
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. |
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. |
SMALLDATETIME | 4-bajtowy typ do zapisu daty z zakresu 1900-01-01 do 2076-06-06 z dokładnością do 1 minuty. |
TIME | 3 – 5-bajtowy typ do zapisu czasu z dokładnością do 100 ns. Ilość bajtów zależy od określonej przez użytkownika skali precyzji. |
Znakowe: |
|
CHAR | Stało-znakowy typ o wielkości 1 – 8000 bajtów. |
TEXT | Zmienno-znakowy typ o długości max. 230 – 1 bajtów. |
VARCHAR | Zmienno-znakowy typ o długości 1 – 8000 bajtów. |
Znakowe Unicode: |
|
NCHAR | Stało-znakowy typ Unicode o wielkości 1 – 4000 bajtów. |
NTEXT | Zmienno-znakowy typ Unicode o wielkości max. 230 – 1 bajtów. |
NVARCHAR | Zmienno-znakowy typ Unicode o wielkości 1 – 4000 bajtów. |
Binarne: |
|
BINARY | Przechowywany najczęściej jako stały strumień bajtów, typ o wielkości 1 – 8000 bajtów. |
IMAGE | Zmienno-bajtowy typ o długości 0 – 231 – 1, przeznaczony do składowania plików w bazie danych. |
VARBINARY | Przechowywany najczęściej jako zmienny strumień bajtów, typ o wielkości 1 – 8000 bajtów. |
Przestrzenne: |
|
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. |
Inne: |
|
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. |
TIMESTAMP | Typ danych automatycznie generujący liczby binarne, unikalne w całej bazie danych. |
UNIQUEIDENTIFIER | Typ umożliwiający automatyczne generowanie unikalnych liczb binarnych w bazie danych. |
* Źródło: strony Microsoft.
br>
Dane typu DATA można formatować za pomocą CONVERT, natomiast niektóre pozostałe typy danych można rzutować na inne za pomocą CAST.
* Źródło: strony Microsoft.
br>
br>
PLIKI DO ŚCIĄGNIĘCIA:
1. 003_Typy_Danych.sql
br>