Cet article contient une référence rapide des types de données fournis par le système disponibles dans SQL Server 2017, ainsi que des informations de base telles que la longueur maximale en octets, la précision, l'échelle et si le type de données est nullable ou non (1
signifie qu'il est nullable, 0
signifie qu'il n'est pas nullable).
Chiffres exacts
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
bigint | 8 | 19 | 0 | 1 |
bit | 1 | 1 | 0 | 1 |
décimal | 17 | 38 | 38 | 1 |
entier | 4 | 10 | 0 | 1 |
l'argent | 8 | 19 | 4 | 1 |
numérique | 17 | 38 | 38 | 1 |
smallint | 2 | 5 | 0 | 1 |
petite monnaie | 4 | 10 | 4 | 1 |
tinyint | 1 | 3 | 0 | 1 |
Chiffres approximatifs
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
flottant | 8 | 53 | 0 | 1 |
réel | 4 | 24 | 0 | 1 |
Date et heure
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
date | 3 | 10 | 0 | 1 |
dateheure2 | 8 | 27 | 7 | 1 |
dateheure | 8 | 23 | 3 | 1 |
datetimeoffset | 10 | 34 | 7 | 1 |
smalldatetime | 4 | 16 | 0 | 1 |
heure | 5 | 16 | 7 | 1 |
Chaînes de caractères
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
caractère | 8000 | 0 | 0 | 1 |
texte | 16 | 0 | 0 | 1 |
varchar | 8000 | 0 | 0 | 1 |
Chaînes de caractères Unicode
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
nchar | 8000 | 0 | 0 | 1 |
texte | 16 | 0 | 0 | 1 |
nvarchar | 8000 | 0 | 0 | 1 |
Chaînes binaires
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
binaire | 8000 | 0 | 0 | 1 |
image | 16 | 0 | 0 | 1 |
varbinaire | 8000 | 0 | 0 | 1 |
Autres types de données
Nom | Longueur maximale | Précision | Échelle | Nullable ? |
---|---|---|---|---|
hierarchyid | 892 | 0 | 0 | 1 |
sql_variant | 8016 | 0 | 0 | 1 |
géométrie | -1 | 0 | 0 | 1 |
géographie | -1 | 0 | 0 | 1 |
horodatage* | 8 | 0 | 0 | 0 |
identifiant unique | 16 | 0 | 0 | 1 |
xml | -1 | 0 | 0 | 1 |
nom_sys | 256 | 0 | 0 | 0 |
* L'horodatage le type de données est synonyme de rowversion Type de données. Voir ci-dessous pour plus d'informations.
Les types "cursor", "table" et "rowversion"
J'ai récupéré les informations dans les tableaux ci-dessus via le sys.types
vue du catalogue système. En plus des types ci-dessus, la documentation de Microsoft sur les types de données répertorie également le curseur et tableau types, ainsi que rowversion au lieu de horodatage .
Le type "horodatage"
Microsoft conseille que l'horodatage la syntaxe est obsolète. Il est recommandé d'utiliser maintenant rowversion au lieu de horodatage dans la mesure du possible dans nos déclarations DDL.
Cependant, en attendant, vous constaterez peut-être que les colonnes semblent toujours être définies comme timestamp même lorsque vous spécifiez explicitement rowversion lors de leur création (à l'aide de Transact-SQL). Néanmoins, Microsoft indique qu'il s'agit de la syntaxe correcte à utiliser à l'avenir.
Notez également que horodatage dans T-SQL/SQL Server est différent de l'horodatage type de données défini dans la norme ISO.
Il semble que la raison pour laquelle il a été déprécié est due à la confusion causée par son nom. Microsoft l'a reconnu en 2007 et a indiqué qu'il essaierait de le résoudre de manière rétrocompatible dans les futures versions.
Vérifiez votre propre base de données
Vous pouvez récupérer les informations de type de données pour vos propres bases de données en utilisant le sys.types
vue système. Voir Comment renvoyer une liste de types de données dans SQL Server pour une explication et des exemples. L'exécution de cette vue renvoie également tous les alias et types définis par l'utilisateur qui se trouvent dans la base de données.