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

时间:2010-12-22 01:07:08

标签: sql sql-server

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

ID
电话号码
电子邮件
说明(一段文字)
名称
SSN
价格
发货日期
性别(男/女)
停止(是/否)
数量
邮政编码

5 个答案:

答案 0 :(得分:10)

简要推荐:

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

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

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

  • VARCHAR(MAX) / NVARCHAR(MAX)TEXTNTEXT的替代品 - 最多可存储2 GByte(20亿字节)的数据 - 这是Tolstoi {{1}内容的300倍以上1}} - 对于浩大的大多数情况应该足够了: - )

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

  1. 我需要非西欧字符吗?如果是 - >使用War and Peace类型,否则使用NCHAR/NVARCHAR

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

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

答案 1 :(得分: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

答案 2 :(得分:2)

ID - int
Telephone - varchar(12)
email - varchar(size)
descripion varchar(max)
name -varchar(size)
ssn - varchar(11)
price - smallmoney (or money if needed)
shipdate - date (for sql server 2008, or smalldatetime for pre-2008)
discontinued - bit
quanity - int
zipcode - varchar(10)

很多人会在所有情况下推荐nvarchar而不是varchar,但是知道我的网站/观众,我不需要允许国际字符集,也不想浪费空间/速度/资源(我知道最少)。如果需要,则在适当的地方替换nvarchar

答案 3 :(得分: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)

答案 4 :(得分:1)

ID                     int or bigint
Telephone Number       varchar
Email                  varchar
Description            varchar
Name                   varchar
SSN                    varchar
Price                  money
Ship Date              datetime or date
Sex (m/f)              char(1)
Discontinued (yes/no)  bit
Quantity               int
Zip Code               varchar