sysname
是一种内置数据类型,限制为128个Unicode字符,IIRC主要用于在创建脚本时存储对象名称.它的值不能是NULL
这与使用nvarchar(128) NOT NULL
基本相同
EDIT
正如@Jim在 comments 中提到的,我不认为真的有商业 case 会用sysname
来表示诚实.Microsoft在SQL Server中构建内部sys
表和存储过程等时,主要使用它.
例如,通过执行Exec sp_help 'sys.tables'
,您将看到列name
被定义为sysname
,这是因为它的值实际上本身就是一个对象(一个表)
我不会太担心的.
还值得注意的是,对于那些仍在使用SQL Server 6.5及更低版本的人(还有人在使用它吗?)内置型sysname
相当于varchar(30)
Documentation
sysname
与100的文档一起定义,在备注部分:
sysname是系统提供的用户定义数据类型,除了不可为空之外,它在功能上等同于nvarchar(128).sysname用于引用数据库对象名称.
为了澄清上述 comments ,default sysname被定义为NOT NULL
,当然可以将其定义为可空.还需要注意的是,SQL Server实例之间的确切定义可能有所不同.
sysname数据类型用于表列、变量和存储
有关sysname
允许或不允许NULL
个值的更多信息,请参见此处https://stackoverflow.com/a/52290792/300863
仅仅因为它是默认值(不为NULL),并不保证它会是!