Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce que le type de données SYSNAME dans SQL Server ?

sysname est un type de données intégré limité à 128 caractères Unicode qui, IIRC, est principalement utilisé pour stocker les noms d'objets lors de la création de scripts. Sa valeur ne peut pas être NULL

C'est fondamentalement la même chose que d'utiliser nvarchar(128) NOT NULL

MODIFIER

Comme mentionné par @Jim dans les commentaires, je ne pense pas qu'il y ait vraiment une analyse de rentabilisation où vous utiliseriez sysname pour être honnête. Il est principalement utilisé par Microsoft lors de la construction du sys interne tables et procédures stockées, etc. dans SQL Server.

Par exemple, en exécutant Exec sp_help 'sys.tables' vous verrez que la colonne name est défini comme sysname c'est parce que la valeur de this est en fait un objet en soi (une table)

Je ne m'en soucierais pas trop.

Il convient également de noter que pour les personnes qui utilisent encore SQL Server 6.5 et versions antérieures (y a-t-il encore des personnes qui l'utilisent ?) le type intégré de sysname est l'équivalent de varchar(30)

Documents

sysname est défini avec la documentation pour nchar et nvarchar , dans la section des remarques :

nom_système est un type de données défini par l'utilisateur fourni par le système qui est fonctionnellement équivalent à nvarchar(128) , sauf qu'il n'est pas nullable. nom_système est utilisé pour référencer les noms d'objets de la base de données.

Pour clarifier les remarques ci-dessus, par par défaut nom_système est défini comme NOT NULL il est certainement possible de le définir comme nullable. Il est également important de noter que la définition exacte peut varier entre les instances de SQL Server.

Utilisation de types de données spéciaux

Le nom système Le type de données est utilisé pour les colonnes de table, les variables et les paramètres de procédure stockée qui stockent les noms d'objet. La définition exacte desysname est lié aux règles des identifiants. Par conséquent, il peut varier entre les instances de SQL Server. nom_système est fonctionnellement identique à nvarchar(128) sauf que, par défaut, sysname est non nulle. Dans les versions antérieures de SQL Server, sysname est défini comme varchar(30).

Quelques informations supplémentaires sur sysname autoriser ou interdire NULL les valeurs peuvent être trouvées ici https://stackoverflow.com/a/52290792/300863

Ce n'est pas parce que c'est la valeur par défaut (être NOT NULL) que ce sera le cas !