SQL Server:最常用的数据类型?

for*_*yez 7 sql sql-server

我有点困惑,因为在sql server(ntext,varchar,nvarchar等)中有很多变量类型,所以如果你给我以下字段使用的数据类型,我会更好地理解这一点.如果我错过了常见的字段类型,请告诉我.

身份证
电话号码
电邮
说明(一段文字)
姓名
SSN
价格
出货日期
性别(月/日)
已停产(是/否)
数量
邮编

mar*_*c_s 10

简要推荐:

  • TEXT, NTEXT, IMAGE:所有这些类型都已弃用并计划在SQL Server的未来版本中删除 - 请勿使用这些类型!

  • CHAR对比VARCHAR:CHAR是固定长度的,并且它会随着空间所定义的长度填充输入.最适合短字符串(<5个字符),例如代码,如货币(几乎总是3个字符),美国状态(2个字符)等VARCHAR,另一方面最适合较长的字符串,并且只存储插入的字符数/更新.如果您在字段中定义VARCHAR(200)并且仅插入Christmas,则您的字段占用9个字符(并且有一点点开销)

  • NCHAR/NVARCHAR:以上的Unicode版本; 始终每个字符存储2个字节,因此您的字段Christmas将存储9个字符并使用18个字节来执行此操作.如果您有非西欧语言字符,例如西里尔语,阿拉伯语,希伯来语,亚洲语或其他字母,则需要这些字符.

  • VARCHAR(MAX) / NVARCHAR(MAX)更新TEXTNTEXT- 存储多达2 GByte(20亿字节)的数据 - 这是Tolstoi内容的300多倍War and Peace- 应该足以满足绝大多数情况:-)

所以你的决策树可能是这样的:

  1. 我需要非西欧角色吗?如果是 - >使用NCHAR/NVARCHAR类型,否则CHAR/VARCHAR

  2. 我的字符串是否很短(<5个字符)并且通常总是相同的长度?如果是:使用CHAR,否则使用VARCHAR

  3. 我真的需要非常大量的文本吗?如果是这样,请使用VARCHAR(MAX),否则请根据您的需要调整大小


Jus*_*ner 6

Field -> Data Type
-----    ---------
Id       int
Phone #  varchar
Email    varchar
Desc     varchar
Name     varchar
Ssn      varchar
Price    decimal, money, smallmoney
ShipDate datetime
Sex      bit
Discont  bit
Quantity int
ZipCode  varchar
Run Code Online (Sandbox Code Playgroud)


Joh*_*ock 1

这是我过去用过的

ID = bigint 
Telephone = varchar(12)
Email = varchar(100)
Description = nvarchar(max) (sql Server 2005 and 2008 only)
Name = nvarchar(100)
SSN = varchar(11)
Price = money
ShipDate = datetime (date if using SQL Server 2008)
Sex = char(1) (i have also used bit before 0 = female 1 =male)
Discontinued (true false field) = bit
Quantity = int if not fractional decimal if it is fractional
ZipCode = varchar(10)
Run Code Online (Sandbox Code Playgroud)