Types de données SQL Server avec exemples

⚡ Résumé intelligent

Les types de données de SQL Server définissent le type de valeur qu'une colonne ou une variable peut stocker, comme entier, décimal, caractère, date ou binaire. Choisir le type approprié garantit la validité des données et une utilisation efficace de la mémoire.

  • (I.e. Valeur numérique exacte : bigint, int, smallint, tinyint, bit, decimal, numeric, money et smallmoney stockent des nombres entiers précis et à virgule fixe.
  • 〰🇧🇷 Valeur numérique approximative : Les types float et real stockent des valeurs approximatives à virgule flottante utilisées dans les calculs scientifiques.
  • 📅 Date et l'heure: Les types datetime, smalldatetime, date, time, datetimeoffset et datetime2 stockent des valeurs temporelles.
  • 🔤 Caractères et Unicode : char, varchar et text contiennent du texte ; nchar, nvarchar et ntext contiennent du texte Unicode.
  • 🖼️ Binaire et autres : Les types de stockage binaire, varbinary et image stockent des données binaires ; les types cursor, xml et uniqueidentifier couvrent des besoins spécifiques.
  • 🧠 Choisir Wisely: L'association de chaque colonne au type le plus petit approprié améliore l'efficacité du stockage et l'intégrité des données.

Types de données SQL Server avec exemples

Qu’est-ce que le type de données ?

Un type de données dans MS SQL Server Le type de données est défini comme le type de données qu'une colonne ou une variable peut stocker. Il s'agit du type de données qu'un objet contient, comme un entier, un caractère ou une chaîne de caractères. Lors de la création d'un objet, le type de données est défini comme le type de données qu'une colonne ou une variable peut stocker. table or variableEn plus de spécifier le nom, vous définissez également le type de données qu'il stockera.

Comment utiliser le type de données MS SQL

Il est nécessaire de définir au préalable le type de données qu'une colonne ou une variable peut stocker. Déterminer le type de données empêche également l'utilisateur de saisir des données inattendues ou invalides.

Vous pouvez optimiser l'utilisation de la mémoire en attribuant un type de données approprié à une variable ou à une colonne, ce qui alloue uniquement la quantité de mémoire système nécessaire aux données de cette colonne.

MS SQL offre une large gamme de types de données de base dans SQL pour répondre aux besoins des utilisateurs, notamment en matière de dates, de données binaires, d'images, etc.

Pourquoi utiliser les DataTypes ?

Prenons l'exemple d'une simple page d'inscription pour une application web. Les trois champs à saisir sont : Prénom, Nom et Numéro de téléphone.

Il convient de noter ici que, dans des situations réelles :

  • Le « prénom/nom » sera toujours classé par ordre alphabétique.
  • « Contact » sera toujours numérique.

L'exemple ci-dessous illustre ces champs sur un formulaire d'inscription.

Exemple de formulaire d'inscription définissant le prénom et le nom comme des caractères et le contact comme un entier

D'après l'image ci-dessus, il est logique de définir « Prénom/Nom » comme une chaîne de caractères et « Contact » comme un nombre entier.

Il est évident que dans toute application, tous les champs contiennent un type de données ou un autre, par exemple numériques, alphabétiques, de date, et bien d'autres.

Il est important de noter que les besoins en mémoire varient selon le type de données. Par conséquent, pour une utilisation optimale de la mémoire, il est plus judicieux de définir la colonne ou la variable avec le type de données qu'elle contiendra.

Type de données disponible dans MS SQL Server

Voici la liste des types de données de MS SQL Server. MS SQL Server prend en charge les catégories de types de données suivantes :

  • Numérique exact
  • Chiffre approximatif
  • Date et heure
  • Chaînes de caractères
  • Chaînes de caractères Unicode
  • Chaînes binaires
  • Autres types de données

Le diagramme ci-dessous regroupe les types de données MS SQL Server dans ces catégories.

Diagramme groupeping Les types de données MS SQL Server sont classés en sept catégories.

Types de données numériques exactes dans SQL

Le type numérique exact comprend neuf sous-types de données dans SQL Server. Chacun stocke des nombres entiers ou à virgule fixe dans une plage définie.

Type de données Description Limite inférieure Limite supérieure Mémoire
bigint Il stocke les nombres entiers dans la plage donnée −2^63 (−9,223,372,036,854,775,808 ) 2^63−1 (32 767) Octets 8
int Il stocke les nombres entiers dans la plage donnée −2^31 (−2,147,483,648 ) 2^31−1 (32 767) Octets 4
petit entier Il stocke les nombres entiers dans la plage donnée −2^15 (−32,768 ) 2^15−1 (32 767) Octets 2
minuscule Il stocke les nombres entiers dans la plage donnée 0 255 Octets 1
Bits Il peut prendre des valeurs 0, 1 ou NULL. 0 1 1 octet / colonne de 8 bits
décimal Utilisé pour les nombres à échelle et à précision fixe −10^38+1 10^38−1 5 à 17 octets
numérique Utilisé pour les nombres à échelle et à précision fixe −10^38+1 10^38−1 5 à 17 octets
de l'argent Utilisé pour les données monétaires -922,337,203,685,477.5808 +922,337,203,685,477.5807 Octets 8
petit argent Utilisé pour les données monétaires -214,478.3648 +214,478.3647 Octets 4

Types de données numériques exacts dans SQL Server avec exemples :

requête:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Sortie :

2

syntaxe:

Decimal (P,S)

Ici, P représente la précision et S l'échelle.

requête:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31
PRINT @Datatype_Decimal

Sortie :

2.31

Types de données numériques approximatifs dans SQL

La catégorie des nombres numériques approximatifs en SQL inclut les valeurs à virgule flottante et les valeurs réelles. Ces types de données sont principalement utilisés dans les calculs scientifiques.

Type de données Description Limite inférieure Limite supérieure Mémoire La précision
flotter(n) Utilisé pour un nombre de précision flottant −1.79E+308 1.79E + 308 Dépend de la valeur de n 15 chiffres
réal Utilisé pour un nombre de précision flottant −3.40E+38 3.40E + 38 Octets 4 7 chiffres

Le type float utilise la syntaxe suivante :

Syntax:  FLOAT [(n)]

Ici, n représente le nombre de bits utilisés pour stocker la mantisse du nombre flottant en notation scientifique. Par défaut, la valeur de n est 53.

Lorsque vous définissez un type de données comme float, n doit être une valeur comprise entre 1 et 53. SQL Server traite n comme l'une des deux valeurs possibles : si 1<=n<=24, n est traité comme 24 ; si 25<=n<=53, n est traité comme 53.

Exemple de requête :

DECLARE @Datatype_Float FLOAT(24) = 22.1234
PRINT @Datatype_Float

Sortie :

22.1234

Types de données de date et d'heure dans SQL

Cette catégorie stocke les données de type date et heure.

Type de données Description Taille de stockage Exactitude Gamme inférieure Gamme supérieure
DateTime Utilisé pour spécifier une date et une heure du 1er janvier 1753 au 31 décembre 9999. Il a une précision de 3.33 millisecondes. Octets 8 Arrondi aux incréments de 000, 003, 007 1753-01-01 9999-12-31
petit temps Utilisé pour spécifier une date et une heure entre le 1er janvier 1900 et le 6 juin 2079. Sa précision est d'une minute. 4 octets, fixe 1 minute 1900-01-01 2079-06-06
données Utilisé pour stocker uniquement une date comprise entre le 1er janvier 0001 et le 31 décembre 9999. 3 octets, fixe 1 jour 0001-01-01 9999-12-31
Paisible Utilisé uniquement pour stocker des valeurs temporelles avec une précision de 100 nanosecondes. Octets 5 100 nanosecondes 00:00:00.0000000 23:59:59.9999999
décalage dateheure Similaire à datetime, mais avec un décalage horaire. Octets 10 100 nanosecondes 0001-01-01 9999-12-31
dateheure2 Utilisé pour spécifier une date et une heure du 1er janvier 0001 au 31 décembre 9999 Octets 6 100 nanosecondes 0001-01-01 9999-12-31

Exemple de requête :

DECLARE @Datatype_Date DATE = '2030-01-01'
PRINT @Datatype_Date

Sortie :

'2030-01-01'

Types de données de chaînes de caractères dans SQL

Cette catégorie concerne les types de caractères. Elle permet de définir des données de type caractère de longueur fixe ou variable. Elle comprend quatre types de données. Vous trouverez ci-dessous les types de données de chaînes de caractères, accompagnés d'exemples.

Type de données Description Limite inférieure Limite supérieure Mémoire
carboniser C'est une chaîne de caractères de largeur fixe. Il stocke un maximum de 8,000 caractères. 0 caractères 8000 caractères n octets
varchar Il s'agit d'une chaîne de caractères de largeur variable. 0 caractères 8000 caractères n octets + 2 octets
varchar (maximum) Il s'agit d'une chaîne de caractères de largeur variable. Il stocke un maximum de 1,073,741,824 caractères. 0 caractères 2 ^ 31 caractères n octets + 2 octets
texte Il s'agit d'une chaîne de caractères de longueur variable. Elle peut stocker jusqu'à 2 Go de données textuelles. 0 caractères 2,147,483,647 caractères n octets + 4 octets

Exemple de requête :

DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'
PRINT @Datatype_Char

Sortie :

Il s'agit du type de données de caractère

Types de données de chaînes de caractères Unicode dans SQL

Cette catégorie stocke l'ensemble des caractères Unicode, qui utilisent l'encodage de caractères UTF-16.

Type de données Description Limite inférieure Limite supérieure Mémoire
nchar Il s'agit d'une chaîne Unicode de largeur fixe. 0 caractères 4000 caractères 2 fois n octets
Nvarchar Il s'agit d'une chaîne Unicode de largeur variable. 0 caractères 4000 caractères 2 fois n octets + 2 octets
ntext Il s'agit d'une chaîne Unicode de largeur variable. 0 caractères 1,073,741,823 caractères 2 fois la longueur de la chaîne

Exemple de requête :

DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'
PRINT @Datatype_nChar

Sortie :

Il s'agit du type de données nCharacter

Types de données de chaîne binaire dans SQL

Cette catégorie contient des chaînes binaires de longueur fixe et variable.

Type de données Description Limite inférieure Limite supérieure Mémoire
binaire Il s'agit d'une chaîne binaire de longueur fixe. Elle peut stocker un maximum de 8 000 octets. Octets 0 Octets 8000 n octets
varbinary Il s'agit d'une chaîne binaire de longueur variable. Elle peut stocker jusqu'à 8 000 octets. Octets 0 Octets 8000 La longueur réelle des données saisies + 2 octets
image Il s'agit d'une chaîne binaire de longueur variable. Elle peut stocker jusqu'à 2 Go. Octets 0 Octets 2,147,483,647 -

Exemple de requête :

DECLARE @Datatype_Binary BINARY(2) = 12;
PRINT @Datatype_Binary

Sortie :

0x000C

Autres types de données dans SQL

Voici les autres types de données SQL Server, avec leurs descriptions ci-dessous :

Type de données Description
Curseur Sa sortie est une colonne de sp_cursor_list et sp_describe_cursor. Elle renvoie le nom de la variable curseur.
Version de la ligne Il appose un numéro de version sur les lignes du tableau.
Hiérarchie Ce type de données représente une position dans une hiérarchie.
Identifiant unique Stocke un GUID, souvent converti à partir d'une expression de caractères.
Variante SQL Il stocke les valeurs des types de données pris en charge par SQL Server.
XML Il stocke les données XML dans une colonne.
Type de géométrie spatiale Il représente les données dans un système de coordonnées plat.
Type de géographie spatiale Il représente les données dans le système de coordonnées de la Terre ronde.
table Il stocke un ensemble de résultats pour un traitement ultérieur.

Faits intéressants!

  • Le type de données CHAR est plus rapide que le type de données VARCHAR lors de la récupération des données, car sa largeur fixe évite la gestion de la longueur.ping.

FAQ

VARCHAR stocke les caractères non Unicode sur un octet chacun, tandis que NVARCHAR stocke les caractères Unicode sur deux octets chacun. Choisissez NVARCHAR lorsqu'une colonne doit contenir plusieurs langues ou symboles ne faisant pas partie d'une même page de codes ; sinon, VARCHAR utilise moins d'espace de stockage.

Utilisez le type DECIMAL (ou NUMERIC) lorsque les valeurs doivent être exactes, comme les montants ou les mesures, car il garantit une précision fixe. Utilisez le type FLOAT pour les valeurs scientifiques approximatives où de légères différences d'arrondi sont acceptables et où une grande marge d'erreur prime sur l'exactitude.

Oui. Dans SQL Server, DECIMAL et NUMERIC sont fonctionnellement identiques. Tous deux acceptent une précision et une échelle et stockent des nombres à virgule fixe exacts ; les deux mots clés sont donc interchangeables. Vous pouvez utiliser le nom que votre équipe préfère pour une meilleure lisibilité.

CHAR est un type de longueur fixe qui complète les valeurs courtes par des espaces, de sorte que chaque valeur utilise la largeur déclarée. VARCHAR est un type de longueur variable qui ne stocke que les caractères saisis plus deux octets. Utilisez CHAR pour les codes uniformes et VARCHAR pour les textes de longueur variable.

Oui. ALTER TABLE La commande ALTER COLUMN table_name column_name new_type modifie le type de données d'une colonne. La modification ne réussit que si les valeurs existantes peuvent être converties sans problème vers le nouveau type ; sinon, elle échoue. Il est donc conseillé de tester les conversions et de sauvegarder les données au préalable.

Le type VARCHAR(n) standard peut stocker jusqu'à 8 000 caractères. Le type VARCHAR(max) peut stocker jusqu'à environ 2 Go (2^31-1 octets) et est conçu pour les textes longs dépassant 8 000 caractères. Utilisez VARCHAR(max) uniquement lorsque les valeurs peuvent réellement atteindre cette taille.

Oui. Copilote GitHub Il peut suggérer des types de données pour les colonnes et générer des instructions DECLARE et CREATE TABLE à partir d'invites en langage naturel. Vérifiez toujours la précision, l'échelle, la longueur et les exigences Unicode par rapport à vos données avant d'appliquer ses suggestions en production.

Les outils d'IA et d'apprentissage automatique analysent des exemples de données pour recommander les types, la précision et les longueurs appropriés, signaler les colonnes surdimensionnées qui gaspillent de l'espace de stockage et détecter les incohérences lors des migrations. Ils accélèrent la conception du schéma pendant que le développeur valide les choix finaux.

Résumez cet article avec :