2012-01-02 80 views
0

下列SQL Server數據類型用於什麼?什麼是一些不尋常的SQL Server數據類型的實際使用?

給我一些現實世界的例子。

  1. binary(50)varbinary(50)varbinary(max)代替圖像
  2. smallinttinyint代替intbit
  3. varchar(50)varchar(max)代替text
  4. sql_variant
  5. uniqueidentifier
+1

該品種在MSSQL類型是由於微軟的理念,「如果有些白癡想它,我們把它賣給他。」 ,將這個可憐的傢伙綁在一個專有平臺上。 – Philip 2012-01-02 15:09:04

+4

@菲利普:爲了澄清你的偏見,你是「反MS」,「反特性」還是「反非標準」? – gbn 2012-01-02 15:13:27

+0

@gbn:呵呵,我選擇了「反非標準合規」,但我不會完全稱我爲「反」。通常情況下,標準不能提供足夠的選擇,但IMO的解決方案是擴展標準,而不是引入自制解決方案。令人遺憾的是,它通常是反其道而行之,但即使如此,仍有可能認同自定義擴展標記是這樣的,例如,帶有CSS擴展,其中一些供應商在'-moz- *'和'-webkit- *'中佔據了自己的名稱空間。我幾乎無法想象這是一個好主意去除*部分界面的場景。 – Philip 2012-01-02 15:25:43

回答

3

1)

varbinarymax而不是圖片

image被棄用,因此,你需要使用varbinary(max),以確保未來的SQL Server版本

2)

SMALLINT和TINYINT,而不是INT兼容性和位

這四種不同類型的它存儲具有不同範圍的數值。這取決於數據要在該列保存:

  • ,如果你只需要0和1,使用bit
  • 如果你需要不超過0〜255,使用tinyint
  • ,如果您需要不超過-32768至32768,使用smallint
  • ,如果你需要更多的,使用int

當然你也可以使用int的一切,但日é「更大」的類型也需要更多的每行空間。因此,如果您只需要0和1個值,那麼使用int列絕對沒有意義,因爲它只會不必要地增長數據庫。

3)

VARCHAR(50)和varcharmax代替文本

同1):text被棄用,因此,你需要使用varchar(50)varchar(max),以確保將來的兼容性(與如果您的文本總是可以容納50個字符,那麼無論如何使用textvarchar(max)都沒有意義)。

5)

唯一標識符

要存儲GUIDs

+0

請討論(4)。 – anonymous 2012-01-02 19:39:04

+0

@Saqib:我在答案中沒有提及'sql_variant',因爲我對它沒有任何瞭解(說實話,在我讀你的問題之前,我從來沒有聽說過它)。但[gbn's answer](http://stackoverflow.com/a/8702375/6884)中的鏈接對我來說看起來相當不錯。 – 2012-01-02 22:34:24

相關問題