我有点困惑,因为sql server(ntext,varchar,nvarchar等)中有很多变量类型,所以如果你给我以下字段使用的数据类型,我会理解这一点好一点。如果我错过了常见的字段类型,请告诉我。
ID
电话号码
电子邮件
说明(一段文字)
名称
SSN
价格
发货日期
性别(男/女)
停止(是/否)
数量
邮政编码
答案 0 :(得分: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)
是TEXT
和NTEXT
的替代品 - 最多可存储2 GByte(20亿字节)的数据 - 这是Tolstoi {{1}内容的300倍以上1}} - 对于浩大的大多数情况应该足够了: - )
所以你的决策树可能是这样的:
我需要非西欧字符吗?如果是 - >使用War and Peace
类型,否则使用NCHAR/NVARCHAR
我的字符串是否很短(<5个字符)并且通常总是相同的长度?如果是:使用CHAR,否则使用VARCHAR
我真的需要非常大量的文字吗?如果是这样,请使用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