Ten artykuł zawiera krótkie odniesienie do typów danych dostarczanych przez system dostępnych w programie SQL Server 2017, a także kilka podstawowych informacji, takich jak maksymalna długość w bajtach, precyzja, skala i czy typ danych dopuszcza wartość null (1 oznacza, że nie ma wartości null, 0 oznacza, że nie można zerować).
Dokładne wartości liczbowe
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| duży | 8 | 19 | 0 | 1 |
| bit | 1 | 1 | 0 | 1 |
| dziesiętny | 17 | 38 | 38 | 1 |
| int | 4 | 10 | 0 | 1 |
| pieniądze | 8 | 19 | 4 | 1 |
| liczbowe | 17 | 38 | 38 | 1 |
| mały | 2 | 5 | 0 | 1 |
| małe pieniądze | 4 | 10 | 4 | 1 |
| tinyint | 1 | 3 | 0 | 1 |
Przybliżone wartości liczbowe
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| pływający | 8 | 53 | 0 | 1 |
| prawdziwe | 4 | 24 | 0 | 1 |
Data i godzina
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| data | 3 | 10 | 0 | 1 |
| data/godzina2 | 8 | 27 | 7 | 1 |
| data i godzina | 8 | 23 | 3 | 1 |
| przesunięcie daty i godziny | 10 | 34 | 7 | 1 |
| smalldatetime | 4 | 16 | 0 | 1 |
| czas | 5 | 16 | 7 | 1 |
Ciągi znaków
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| znak | 8000 | 0 | 0 | 1 |
| tekst | 16 | 0 | 0 | 1 |
| varchar | 8000 | 0 | 0 | 1 |
Ciągi znaków Unicode
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| nchar | 8000 | 0 | 0 | 1 |
| ntext | 16 | 0 | 0 | 1 |
| nvarchar | 8000 | 0 | 0 | 1 |
Ciągi binarne
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| binarny | 8000 | 0 | 0 | 1 |
| obraz | 16 | 0 | 0 | 1 |
| zmienna | 8000 | 0 | 0 | 1 |
Inne typy danych
| Nazwa | Maksymalna długość | Precyzja | Skala | Nullable? |
|---|---|---|---|---|
| hierarchid | 892 | 0 | 0 | 1 |
| sql_variant | 8016 | 0 | 0 | 1 |
| geometria | -1 | 0 | 0 | 1 |
| geografia | -1 | 0 | 0 | 1 |
| sygnatura czasowa* | 8 | 0 | 0 | 0 |
| unikalny identyfikator | 16 | 0 | 0 | 1 |
| xml | -1 | 0 | 0 | 1 |
| nazwa systemu | 256 | 0 | 0 | 0 |
* sygnatura czasowa typ danych jest synonimem rowversion typ danych. Więcej informacji znajdziesz poniżej.
Typy „kursor”, „table” i „rowversion”
Pobrałem informacje z powyższych tabel za pośrednictwem sys.types widok katalogu systemowego. Oprócz powyższych typów, dokumentacja firmy Microsoft dotycząca typów danych zawiera również kursor i stół typy, a także rowversion zamiast sygnatury czasowej .
Typ „znacznika czasu”
Microsoft zaleca, aby sygnatura czasowa składnia jest przestarzała. Zaleca się, abyśmy teraz używali rowversion zamiast sygnatury czasowej tam, gdzie to możliwe, w naszych oświadczeniach DDL.
Jednak w międzyczasie możesz zauważyć, że kolumny nadal wydają się być zdefiniowane jako sygnatura czasowa nawet jeśli wyraźnie określisz rowversion podczas ich tworzenia (przy użyciu języka Transact-SQL). Niemniej jednak Microsoft radzi, że jest to właściwa składnia, której należy używać w przyszłości.
Pamiętaj też, że sygnatura czasowa w T-SQL/SQL Server różni się od sygnatury czasowej typ danych zdefiniowany w normie ISO.
Wygląda na to, że powodem, dla którego został wycofany, jest zamieszanie, jakie wywołała jego nazwa. Microsoft przyznał to w 2007 roku i poinformował, że spróbuje rozwiązać ten problem w sposób zgodny z poprzednimi wersjami w przyszłych wydaniach.
Sprawdź własną bazę danych
Możesz pobrać informacje o typach danych dla własnych baz danych za pomocą sys.types widok systemu. Zobacz Jak zwrócić listę typów danych w SQL Server, aby uzyskać wyjaśnienie i przykłady. Uruchomienie tego widoku zwraca również wszelkie aliasy i typy zdefiniowane przez użytkownika, które znajdują się w bazie danych.