我有點困惑,因爲有很多變量類型在SQL服務器(ntext,varchar,nvarchar等),所以也許如果你給我什麼數據類型你用於下列領域我會更好地理解這一點。如果我錯過了一個常見的字段類型,請告訴我。SQL Server:最常用的數據類型?
ID
電話號碼
電子郵件
說明(一段文字)
名稱
SSN
價格
交貨日期
性別(男/女)
停產(是/否)
數量
郵政編碼
我有點困惑,因爲有很多變量類型在SQL服務器(ntext,varchar,nvarchar等),所以也許如果你給我什麼數據類型你用於下列領域我會更好地理解這一點。如果我錯過了一個常見的字段類型,請告訴我。SQL Server:最常用的數據類型?
ID
電話號碼
電子郵件
說明(一段文字)
名稱
SSN
價格
交貨日期
性別(男/女)
停產(是/否)
數量
郵政編碼
這是我在過去
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)
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
我有一個名爲class的表,它包含兩列ClassId和Class。我只能在該表中存儲12條記錄。例如:IX,X,XI,XII,BCom-I等。我的問題:你會爲我的ClassId列建議什麼數據類型,爲什麼? – kashif 2013-04-11 23:10:00
@ kashif - 如果您已經知道只有12個項目,並且您確切知道這些項目將會是什麼,那麼我可能根本不會將它們放入數據庫中。但是,如果我不得不選擇,我肯定會選擇一個int列作爲id。 – 2013-04-11 23:37:01
我其實有一個學生數據庫。我用一個組合框綁定我的Class表,並將Class列保留在Class表中作爲顯示成員和ClassId作爲值標記。在我的studentInfo表中,我使用了一個CLASS CLASSIID,即StudentInfo.ClassId和一個外鍵給Class.ClassId。我希望你現在能理解我的情況 – kashif 2013-04-12 15:09:14
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酌情
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
簡要推薦:
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千兆字節(2個十億字節) - 這是托爾斯泰的War and Peace
的含量超過300倍 - 應足以爲廣大大多數情況下:-)
所以決策樹可能是這樣的:
我是否需要非西方歐洲字符?如果是 - >使用NCHAR/NVARCHAR
類型,否則CHAR/VARCHAR
是我的字符串非常短(< 5個字符)並且通常始終是相同的長度?如果是:使用CHAR,否則VARCHAR
我是否需要非常大量的文本?如果是這樣,使用VARCHAR(MAX),否則它的大小,以滿足您的需求
如果您的應用程序的目標是在世界範圍內的觀衆,我會建議使用Unicode字符串類型(`nchar`,`nvarchar`)代替舊的8位類型(`char`,`varchar`)用於輸入或顯示給用戶的任何內容。 – devstuff 2010-12-22 04:37:05