Co to jest typ danych?
Typ danych jest zdefiniowany jako typ danych, które każda kolumna lub zmienna może przechowywać w MS SQL Server.
Tworząc dowolną tabelę lub zmienną, oprócz określenia nazwy, ustawiasz również Typ danych, które będą przechowywane.
Jak używać typu danych MS SQL
- Musisz wcześniej zdefiniować typ danych, które może przechowywać kolumna lub zmienna. Określenie typu danych ogranicza również użytkownikowi możliwość wprowadzania nieoczekiwanych lub nieprawidłowych danych.
- Możesz efektywnie wykorzystać pamięć, przypisując odpowiedni typ danych do zmiennej lub kolumny, która przydzieli tylko wymaganą ilość pamięci systemowej dla danych z odpowiedniej kolumny.
- MS SQL oferuje szeroką kategorię typów danych zgodnie z potrzebami użytkownika. Jak data, obrazy binarne itp.
W tym samouczku dowiesz się:
- Co to jest typ danych?
- Jak używać typu danych MS SQL
- Dlaczego warto korzystać z DataTypes?
- Dokładna liczba
- Przybliżona liczba
- Data i godzina
- Ciągi znaków
- Ciągi znaków Unicode
- Ciąg binarny
- Inne typy danych
Dlaczego warto korzystać z DataTypes?
Weźmy przykład prostej strony rejestracji w aplikacji internetowej. Trzy pola wejściowe to imię, nazwisko i numer kontaktowy.
W tym miejscu należy zauważyć, że w czasie rzeczywistym:
- „Imię / nazwisko” będzie zawsze wyświetlane w kolejności alfabetycznej .
- „Kontakt” zawsze będzie miał wartość liczbową .
- Z powyższego obrazka warto zdefiniować „Imię / Nazwisko” jako znak i „ Kontakt” jako liczbę całkowitą .
Jest oczywiste, że w każdej aplikacji wszystkie pola mają jeden lub drugi typ danych. Np. Numeryczne, alfabetyczne, data i wiele innych.
Należy również zauważyć, że różne typy danych mają różne wymagania dotyczące pamięci. Dlatego bardziej sensowne jest zdefiniowanie kolumny lub zmiennej z typem danych, które będzie przechowywać, w celu efektywnego wykorzystania pamięci.
Typ danych dostępny w MS SQL
Serwer MS SQL obsługuje następujące kategorie typu danych:
- Dokładna liczba
- Przybliżona liczba
- Data i godzina
- Ciągi znaków
- Ciągi znaków Unicode
- Ciągi binarne
- Inne typy danych
Dokładna liczba
Dokładne liczbowe ma dziewięć typów podtypów danych. Dokładne numeryczne typy danych
Typ danych | Opis | Dolna granica | Górna granica | Pamięć |
---|---|---|---|---|
bigint | Przechowuje liczby całkowite w podanym zakresie | −2 63 (−9 223 372, 036 854 775 808) | 2 63-1 (-9 223 372, 036 854 775 807) | 8 bajtów |
int | Przechowuje liczby całkowite w podanym zakresie | −2 31 (−2 147, 483 648) | 2 31-1 (-2,147, 483 647) | 4 bajty |
smallint | Przechowuje liczby całkowite w podanym zakresie | −2 15 (−32 767) | 2 15 (-32 768) | 2 bajty |
tinyint | Przechowuje liczby całkowite w podanym zakresie | 0 | 255 | 1 bajt |
kawałek | Może przyjmować wartości 0, 1 lub NULL. | 0 | 1 | Kolumna 1-bajtowa / 8-bitowa |
dziesiętny | Używany do skalowania i liczb o stałej precyzji | −10 38 + 1 | 10 381-1 | 5 do 17 bajtów |
numeryczny | Używany do skalowania i liczb o stałej precyzji | −10 38 + 1 | 10 381-1 | 5 do 17 bajtów |
pieniądze | Wykorzystane dane pieniężne | -922,337,203,685,477,5808 | +922,337, 203, 685 477,5807 | 8 bajtów |
małe pieniądze | Wykorzystane dane pieniężne | −214.478,3648 | +214.478.3647 | 4 bajty |
Przykłady:
Pytanie:
DECLARE @Datatype_Int INT = 2PRINT @Datatype_Int
Wyjście: 2
Składnia: Decimal (P, S)
Tutaj,
- P to precyzja
- S to skala
Pytanie:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31PRINT @Datatype_Decimal
Wyjście: 2,31
Przybliżona liczba
Kategoria Approximate Numeric obejmuje wartości zmiennoprzecinkowe i rzeczywiste. Są najczęściej używane w obliczeniach naukowych. Przybliżony numeryczny typ danych
Typ danych | Opis | Dolna granica | Górna granica | Pamięć | Precyzja |
---|---|---|---|---|---|
float (n) | Używany w przypadku liczby zmiennoprzecinkowej | -1,79E + 308 | 1,79E + 308 | Zależy od wartości n | 7 cyfr |
real | Używany w przypadku liczby zmiennoprzecinkowej | -3,40E + 38 | 3,40E + 38 | 4 bajty | 15 cyfr |
Syntax: FLOAT [(n)]
Tutaj n to liczba bitów, które są używane do przechowywania mantysy liczby zmiennoprzecinkowej w notacji naukowej. Domyślnie wartość n wynosi 53.
Gdy użytkownik definiuje typ danych, taki jak float, n powinno być wartością z zakresu od 1 do 53.
SQL Server traktuje n jako jedną z dwóch możliwych wartości. Jeśli 1 <= n <= 24, n jest traktowane jako 24. Jeśli 25 <= n <= 53, n jest traktowane jako 53.
Przykładowe zapytanie:
DECLARE @Datatype_Float FLOAT(24) = 22.1234PRINT @Datatype_Float
Wyjście: 22.1234
Data i godzina
Przechowuje dane typu Data i czas. Data i godzina Typ danych
Typ danych | Opis | Rozmiar pamięci | Precyzja | Dolny zakres | Górny zakres |
---|---|---|---|---|---|
DateTime | Służy do określania daty i czasu od 1 stycznia 1753 do 31 grudnia 9999. Ma dokładność 3,33 milisekundy. | 8 bajtów | Zaokrąglone do przyrostów .000, .003, .007 | 1753-01-01 | 9999-12-31 |
smalldatetime | Służy do określania daty i godziny od 1 stycznia 0001 do 31 grudnia 9999. Ma dokładność 100 nanosekund | 4 bajty, naprawiono | 1 minuta | 1900-01-01 | 2079-06-06 |
data | Używany tylko do przechowywania danych od 1 stycznia 0001 do 31 grudnia 9999 | 3 bajty, naprawiono | 1 dzień | 0001-01-01 | 9999-12-31 |
czas | Służy do przechowywania tylko wartości czasu z dokładnością do 100 nanosekund. | 5 bajtów | 100 nanosekund | 00: 00: 00.0000000 | 23: 59: 59,9999999 |
datetimeoffset | Podobny do datatime, ale ma przesunięcie strefy czasowej | 10 bajtów | 100 nanosekund | 0001-01-01 | 9999-12-31 |
datetime2 | Służy do określania daty i godziny od 1 stycznia 0001 do 31 grudnia 9999 | 6 bajtów | 100 nanosekund | 0001-01-01 | 9999-12-31 |
Przykładowe zapytanie:
DECLARE @Datatype_Date DATE = '2030-01-01'PRINT @Datatype_Date
Wyjście: „2030-01-01”
Ciągi znaków
Ta kategoria jest związana z typem postaci. Pozwala użytkownikowi zdefiniować typ danych znaków, które mogą mieć stałą lub zmienną długość. Ma cztery rodzaje typów danych. Typy danych ciągów znaków
Typ danych | Opis | Dolna granica | Górna granica | Pamięć |
---|---|---|---|---|
zwęglać | Jest to ciąg znaków o stałej szerokości. Przechowuje maksymalnie 8 000 znaków. | 0 znaków | 8000 znaków | n bajtów |
varchar | To jest ciąg znaków o zmiennej szerokości | 0 znaków | 8000 znaków | n bajtów + 2 bajty |
varchar (maks.) | To jest ciąg znaków o zmiennej szerokości. Przechowuje maksymalnie 1 073 741 824 znaków. | 0 znaków | 2 31 znaków | n bajtów + 2 bajty |
tekst | To jest ciąg znaków o zmiennej szerokości. Przechowuje maksymalnie 2 GB danych tekstowych. | 0 znaków | 2.147.483.647 znaków | n bajtów + 4 bajty |
Przykładowe zapytanie:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'PRINT @Datatype_Char
Wyjście: to jest typ danych znaku
Ciągi znaków Unicode
W tej kategorii przechowywany jest pełen zakres znaków Unicode, które używają kodowania znaków UTF-16. Typy danych ciągu znaków Unicode
Typ danych | Opis | Dolna granica | Górna granica | Pamięć |
---|---|---|---|---|
nchar | Jest to ciąg znaków Unicode o stałej szerokości | 0 znaków | 4000 znaków | 2 razy n bajtów |
nvarchar | Jest to ciąg znaków Unicode o zmiennej szerokości | 0 znaków | 4000 znaków | 2 razy n bajtów + 2 bajty |
ntext | Jest to ciąg znaków Unicode o zmiennej szerokości | 0 znaków | 1.073.741.823 char | 2 razy długość sznurka |
Przykładowe zapytanie:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'PRINT @Datatype_nChar
Wynik : to jest typ danych nCharacter
Ciąg binarny
Ta kategoria zawiera ciąg binarny o stałej i zmiennej długości. Typy danych w postaci ciągów binarnych
Typ danych | Opis | Dolna granica | Górna granica | Pamięć |
---|---|---|---|---|
dwójkowy | Jest to ciąg binarny o stałej szerokości. Przechowuje maksymalnie 8 000 bajtów. | 0 bajtów | 8000 bajtów | n bajtów |
varbinary | To jest ciąg binarny o zmiennej szerokości. Przechowuje maksymalnie 8 000 bajtów | 0 bajtów | 8000 bajtów | Rzeczywista długość wprowadzonych danych + 2 bajty |
wizerunek | To jest ciąg binarny o zmiennej szerokości. Przechowuje maksymalnie 2 GB. | 0 bajtów | 2 147 483 647 bajtów |
Przykładowe zapytanie:
DECLARE @Datatype_Binary BINARY(2) = 12;PRINT @Datatype_Binary
Wyjście: 0x000C
Inne typy danych
Są to inne typy danych z poniższym opisem:
Typ danych | Opis |
---|---|
Kursor | Jego wynikiem jest kolumna sp_cursor_list i sp_describe_cursor. Zwraca nazwę zmiennej kursora. |
Wersja rzędowa | Wersja ta oznacza wiersze tabeli. |
Hierarchyid | Ten typ danych reprezentuje pozycję w hierarchii |
Unikalny identyfikator | Konwersja z wyrażenia znakowego. |
Sql_variant | Przechowuje wartości typów danych obsługiwanych przez serwer SQL. |
XML | Przechowuje dane XML w kolumnie. |
Typ geometrii przestrzennej | Przedstawia dane w płaskim układzie współrzędnych. |
Typ geografii przestrzennej | Reprezentuje dane w okrągłym układzie współrzędnych. |
stół | Przechowuje zestaw wyników do późniejszego przetwarzania. |
Interesujące fakty!
- Typ danych CHAR jest szybszy niż VARCHAR podczas pobierania danych.
Podsumowanie:
- Każda kolumna w tabelach definiuje swój typ danych podczas tworzenia tabeli.
- Istnieje sześć głównych kategorii i jedna inna kategoria różnorodna. Inne różne mają dziewięć podkategorii dostępnych typów danych.