2009-02-27 52 views
2

嗨,我想知道什麼時候應該使用不同的數據類型。正如我的表,我怎麼能決定使用哪一種:nvarchar的,NCHAR,VARCHAR,等SQL何時使用哪種數據類型

例子:

我會用一個...列:

Phone number, 
Address, 
First Name, Last Name, 
Email, 
ID number, 
etc. 

感謝您的幫助!

回答

2

VARCHAR,則整數,和位蓋我一天一天的99%使用。

1

N *數據類型(NVARCHAR,NCHAR,NTEXT)用於Unicode字符串。它們佔據了它們「正常」吊墜(VARCHAR,CHAR,TEXT)需要的空間的兩倍,但是它們可以存儲Unicode而不會轉換,並且可能失去保真度。

TEXT數據類型可以存儲幾乎無限量的數據,但它們不如CHAR數據類型好,因爲它們存儲在記錄之外。

THE VARCHAR數據類型是可變長度的。它們不會在末尾填充空格,但是它們的CHAR吊墜(CHAR(20)總是20個字符長,即使只包含5個字母,其餘15個也是空格)。

二進制數據類型適用於二進制數據,無論您是否喜歡存儲到它們中(圖像都是主要示例)。

2

這個問題真的取決於您的要求。我知道這不是一個特別令人滿意的答案,但這是事實。

n..char數據類型是用於Unicode數據的,所以如果你需要在你的數據中使用unicode字符集,你應該使用這些類型而不是它們的「非n」類似物。 nchar和char類型是固定長度,而nvarchar和varchar類型可以具有可變長度,這將影響磁盤和內存中列的大小。通常我會說使用最少磁盤空間的類型,但可以滿足您的需求。

This page有鏈接到SQL Server 2005的這些數據類型的Microsoft描述,其中許多指導何時使用哪種類型。有關char和varchar類型,您可能對this page特別感興趣。

5

作爲一般規則,如果我不打算對它進行算術運算,即使數據本身是數字的,我也不會將任何內容定義爲「數字」字段。

您的「手機」字段就是一個例子。我將它定義爲一個varchar。

+0

關於計算的好處。 – 71GA 2017-04-26 20:50:10

0

其他人已經給出了很好的一般答案,但我想補充一點:當使用VARCHAR() s(我會爲這些類型的領域推薦)時,一定要使用足夠大的長度以適合任何合理的值。例如,我通常爲名稱,電子郵件地址,域名,城市名稱等聲明VARCHAR(100),並且爲URL或街道地址聲明VARCHAR(200)

這比你經常需要的要多。事實上,對於幾乎所有這些值來說,30個字符都是足夠的(除了全名,但一個好的數據庫應該總是分別存儲姓名和姓氏),但它總比在一天之後不得不更改數據類型要好。指定VARCHAR的高於必要長度的成本非常低,但請注意VARCHAR(MAX)TEXT的確帶來了大量開銷,因此僅在必要時才使用它們。

下面是其中指出的情況下,後其中時間長於必要VARCHAR可以傷害表現:Importance of varchar length in MySQL table。去顯示一切有成本,但總的來說,我仍然青睞VARCHAR s。