SQL Server支持的數(shù)據(jù)類(lèi)型

數(shù)據(jù)類(lèi)型
說(shuō)明
BIGINT 從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數(shù)據(jù)(整數(shù))。
INT 從 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 的整型數(shù)據(jù)(整數(shù))。
SMALLINT 從 2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數(shù)據(jù)。
TINYINT 從 0 到 255 的整型數(shù)據(jù)。
BIT 非 1 即 0 的整型數(shù)據(jù)。
DECIMAL 從 -10^38 +1 到 10^38 -1 的固定精度和標(biāo)度的數(shù)字?jǐn)?shù)據(jù)。
NUMERIC 功能上相當(dāng)于十進(jìn)制數(shù)。
MONEY 從 -2^63 (-922,337,203,685,477.5808) 到 2^63 - 1 (+922,337,203,685,477.5807) 的貨幣型數(shù)據(jù),精確到貨幣單位的萬(wàn)分之一。
SMALLMONEY 從 -214,748.3648 到 +214,748.3647 的貨幣型數(shù)據(jù),精確到貨幣單位的萬(wàn)分之一。
FLOAT 從 -1.79E + 308 到 1.79E + 308 的浮點(diǎn)精度數(shù)字?jǐn)?shù)據(jù)。
REAL 從 -3.40E + 38 到 3.40E + 38 的浮點(diǎn)精度數(shù)字?jǐn)?shù)據(jù)。
DATETIME 從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時(shí)間數(shù)據(jù),精確到三百分之一秒(3.33 毫秒)。
SMALLDATETIME 從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時(shí)間數(shù)據(jù),精確到一分鐘。
CHAR 最大長(zhǎng)度 8000 個(gè)字符的固定長(zhǎng)度非 Unicode 字符數(shù)據(jù)。
VARCHAR 最大長(zhǎng)度 8000 個(gè)字符的可變長(zhǎng)度非 Unicode 字符數(shù)據(jù)。
TEXT 最大長(zhǎng)度 2^31 - 1 (2,147,483,647) 個(gè)字符的可變長(zhǎng)度非 Unicode 數(shù)據(jù)。
NCHAR 最大長(zhǎng)度 4,000 個(gè)字符的固定長(zhǎng)度 Unicode 數(shù)據(jù)。
NVARCHAR 最大長(zhǎng)度 4000 個(gè)字符的可變長(zhǎng)度 Unicode 數(shù)據(jù)。sysname 是系統(tǒng)提供的用戶(hù)定義數(shù)據(jù)類(lèi)型,功能上相當(dāng)于 nvarchar(128),用于引用數(shù)據(jù)庫(kù)對(duì)象名稱(chēng)。
NTEXT 最大長(zhǎng)度 2^31 - 1 (1,073,741,823) 個(gè)字符的可變長(zhǎng)度 Unicode 數(shù)據(jù)。
BINARY 最大長(zhǎng)度 8,000 個(gè)字節(jié)的固定長(zhǎng)度二進(jìn)制數(shù)據(jù)。
VARBINARY 最大長(zhǎng)度 8,000 個(gè)字節(jié)的可變長(zhǎng)度二進(jìn)制數(shù)據(jù)。
IMAGE 最大長(zhǎng)度 2^31 - 1 (2,147,483,647) 字節(jié)的可變長(zhǎng)度二進(jìn)制數(shù)據(jù)。
CURSOR 對(duì)光標(biāo)的引用。
SQL_VARIANT 存儲(chǔ) SQL Server 支持的數(shù)據(jù)類(lèi)型(text、ntext、timestampsql_variant 除外)值的數(shù)據(jù)類(lèi)型。
TABLE 用于存儲(chǔ)結(jié)果集合供以后處理的特殊數(shù)據(jù)類(lèi)型。
TIMESTAMP 整個(gè)數(shù)據(jù)庫(kù)中都唯一的一個(gè)數(shù)字,隨著行的每次更新而更新。
UNIQUEIDENTIFIER 全局唯一標(biāo)識(shí)符 (GUID)。

(1)二進(jìn)制數(shù)據(jù)類(lèi)型

   二進(jìn)制數(shù)據(jù)包括 Binary、Varbinary 和 Image
   Binary 數(shù)據(jù)類(lèi)型既可以是固定長(zhǎng)度的(Binary),也可以是變長(zhǎng)度的。
   Binary[(n)] 是 n 位固定的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲(chǔ)窨的大小是 n + 4 個(gè)字節(jié)。
   Varbinary[(n)] 是 n 位變長(zhǎng)度的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲(chǔ)窨的大小是 n + 4個(gè)字節(jié),不是n 個(gè)字節(jié)。
   在 Image 數(shù)據(jù)類(lèi)型中存儲(chǔ)的數(shù)據(jù)是以位字符串存儲(chǔ)的,不是由 SQL Server 解釋的,必須由應(yīng)用程序來(lái)解釋。例如,應(yīng)用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲(chǔ)在 Image 數(shù)據(jù)類(lèi)型中。

(2)字符數(shù)據(jù)類(lèi)型

   字符數(shù)據(jù)的類(lèi)型包括 Char,Varchar 和 Text
   字符數(shù)據(jù)是由任何字母、符號(hào)和數(shù)字任意組合而成的數(shù)據(jù)。
   Varchar 是變長(zhǎng)字符數(shù)據(jù),其長(zhǎng)度不超過(guò) 8KB。Char 是定長(zhǎng)字符數(shù)據(jù),其長(zhǎng)度最多為 8KB。超過(guò) 8KB 的ASCII 數(shù)據(jù)可以使用Text數(shù)據(jù)類(lèi)型存儲(chǔ)。例如,因?yàn)?Html 文檔全部都是 ASCII 字符,并且在一般情況下長(zhǎng)度超過(guò) 8KB,所以這些文檔可以 Text 數(shù)據(jù)類(lèi)型存儲(chǔ)在SQL Server 中。

(3)Unicode 數(shù)據(jù)類(lèi)型

   Unicode 數(shù)據(jù)類(lèi)型包括 Nchar,Nvarchar 和Ntext
   在 Microsoft SQL Server 中,傳統(tǒng)的非 Unicode 數(shù)據(jù)類(lèi)型允許使用由特定字符集定義的字符。在 SQL Server安裝過(guò)程中,允許選擇一種字符集。使用 Unicode 數(shù)據(jù)類(lèi)型,列中可以存儲(chǔ)任何由Unicode 標(biāo)準(zhǔn)定義的字符。在 Unicode 標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。使用Unicode數(shù)據(jù)類(lèi)型,所戰(zhàn)勝的窨是使用非 Unicode 數(shù)據(jù)類(lèi)型所占用的窨大小的兩倍。
   在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar、Nvarchar 和 Ntext 數(shù)據(jù)類(lèi)型存儲(chǔ)。使用這種字符類(lèi)型存儲(chǔ)的列可以存儲(chǔ)多個(gè)字符集中的字符。當(dāng)列的長(zhǎng)度變化時(shí),應(yīng)該使用Nvarchar 字符類(lèi)型,這時(shí)最多可以存儲(chǔ) 4000 個(gè)字符。當(dāng)列的長(zhǎng)度固定不變時(shí),應(yīng)該使用 Nchar 字符類(lèi)型,同樣,這時(shí)最多可以存儲(chǔ)4000 個(gè)字符。當(dāng)使用 Ntext 數(shù)據(jù)類(lèi)型時(shí),該列可以存儲(chǔ)多于 4000 個(gè)字符。

(4)日期和時(shí)間數(shù)據(jù)類(lèi)型

   日期和時(shí)間數(shù)據(jù)類(lèi)型包括 Datetime 和 Smalldatetime兩種類(lèi)型
   日期和時(shí)間數(shù)據(jù)類(lèi)型由有效的日期和時(shí)間組成。例如,有效的日期和時(shí)間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個(gè)數(shù)據(jù)類(lèi)型是日期在前,時(shí)間在后一個(gè)數(shù)據(jù)類(lèi)型是霎時(shí)間在前,日期在后。在 Microsoft SQL Server中,日期和時(shí)間數(shù)據(jù)類(lèi)型包括Datetime 和 Smalldatetime 兩種類(lèi)型時(shí),所存儲(chǔ)的日期范圍是從 1753 年 1 月 1 日開(kāi)始,到9999 年12 月 31 日結(jié)束(每一個(gè)值要求 8 個(gè)存儲(chǔ)字節(jié))。使用 Smalldatetime 數(shù)據(jù)類(lèi)型時(shí),所存儲(chǔ)的日期范圍是 1900年 1 月 1日 開(kāi)始,到 2079 年 12 月 31 日結(jié)束(每一個(gè)值要求 4 個(gè)存儲(chǔ)字節(jié))。
   日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:
   Set DateFormat {format | @format _var|
   其中,format | @format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認(rèn)情況下,日期格式為MDY。
   例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式

(5)數(shù)字?jǐn)?shù)據(jù)類(lèi)型

   數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。數(shù)字?jǐn)?shù)據(jù)類(lèi)型包括正數(shù)和負(fù)數(shù)、小數(shù)(浮點(diǎn)數(shù))和整數(shù)
   整數(shù)由正整數(shù)和負(fù)整數(shù)組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數(shù)存儲(chǔ)的數(shù)據(jù)類(lèi)型是    Int,Smallint和 Tinyint。Int 數(shù)據(jù)類(lèi)型存儲(chǔ)數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類(lèi)型存儲(chǔ)數(shù)據(jù)的范圍,而 Smallint 據(jù)類(lèi)型存儲(chǔ)數(shù)據(jù)的范圍大于Tinyint 數(shù)據(jù)類(lèi)型存儲(chǔ)數(shù)據(jù)的范圍。使用 Int 數(shù)據(jù)狗昔存儲(chǔ)數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個(gè)值要求4個(gè)字節(jié)存儲(chǔ)空間)。使用 Smallint 數(shù)據(jù)類(lèi)型時(shí),存儲(chǔ)數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個(gè)值要求2個(gè)字節(jié)存儲(chǔ)空間)。使用Tinyint 數(shù)據(jù)類(lèi)型時(shí),存儲(chǔ)數(shù)據(jù)的范圍是從0 到255(每一個(gè)值要求1個(gè)字節(jié)存儲(chǔ)空間)。
   精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類(lèi)型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲(chǔ)空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來(lái)確定。
   在SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類(lèi)型是 Float 和 Real。例如,三分之一這個(gè)分?jǐn)?shù)記作。3333333,當(dāng)使用近似數(shù)據(jù)類(lèi)型時(shí)能準(zhǔn)確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲(chǔ)在該列中數(shù)據(jù)不完全一樣。

(6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量 。

   在 Microsoft SQL Server 中,貨幣數(shù)據(jù)的數(shù)據(jù)類(lèi)型是Money 和 Smallmoney

  Money數(shù)據(jù)類(lèi)型要求 8 個(gè)存儲(chǔ)字節(jié),Smallmoney 數(shù)據(jù)類(lèi)型要求 4 個(gè)存儲(chǔ)字節(jié)。

(7)特殊數(shù)據(jù)類(lèi)型

   特殊數(shù)據(jù)類(lèi)型包括前面沒(méi)有提過(guò)的數(shù)據(jù)類(lèi)型。特殊的數(shù)據(jù)類(lèi)型有3種,即    Timestamp、Bit 和 Uniqueidentifier。
   Timestamp 用于表示SQL Server 活動(dòng)的先后順序,以二進(jìn)投影的格式表示。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時(shí)間沒(méi)有關(guān)系。
   Bit 由 1 或者 0 組成。當(dāng)表示真或者假、ON 或者 OFF 時(shí),使用 Bit 數(shù)據(jù)類(lèi)型。例如,詢(xún)問(wèn)是否是每一次訪問(wèn)的客戶(hù)機(jī)請(qǐng)求可以存儲(chǔ)在這種數(shù)據(jù)類(lèi)型的列中。
   Uniqueidentifier 由 16 字節(jié)的十六進(jìn)制數(shù)字組成,表示一個(gè)全局唯一的。當(dāng)表的記錄行要求唯一時(shí),GUID是非常有用。例如,在客戶(hù)標(biāo)識(shí)號(hào)列使用這種數(shù)據(jù)類(lèi)型可以區(qū)別不同的客戶(hù)。

2.用戶(hù)定義的數(shù)據(jù)類(lèi)型

   用戶(hù)定義的數(shù)據(jù)類(lèi)型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類(lèi)型。當(dāng)幾個(gè)表中必須存儲(chǔ)同一種數(shù)據(jù)類(lèi)型時(shí),并且為保證這些列有相同的數(shù)據(jù)類(lèi)型、長(zhǎng)度和可空性時(shí),可以使用用戶(hù)定義的數(shù)據(jù)類(lèi)型。例如,可定義一種稱(chēng)為   postal_code 的數(shù)據(jù)類(lèi)型,它基于 Char 數(shù)據(jù)類(lèi)型。
   當(dāng)創(chuàng)建用戶(hù)定義的數(shù)據(jù)類(lèi)型時(shí),必須提供三個(gè)數(shù):數(shù)據(jù)類(lèi)型的名稱(chēng)、所基于的系統(tǒng)數(shù)據(jù)類(lèi)型和數(shù)據(jù)類(lèi)型的可空性。

(1)創(chuàng)建用戶(hù)定義的數(shù)據(jù)類(lèi)型

   創(chuàng)建用戶(hù)定義的數(shù)據(jù)類(lèi)型可以使用 Transact-SQL 語(yǔ)句。系統(tǒng)存儲(chǔ)過(guò)程 sp_addtype 可以來(lái)創(chuàng)建用戶(hù)定義的數(shù)據(jù)類(lèi)型。其語(yǔ)法形式如下:
   sp_addtype {type},[,system_data_bype][,'null_type']
   其中,type 是用戶(hù)定義的數(shù)據(jù)類(lèi)型的名稱(chēng)。system_data_type 是系統(tǒng)提供的數(shù)據(jù)類(lèi)型,例如 Decimal、Int、Char   等等。 null_type 表示該數(shù)據(jù)類(lèi)型是如何處理空值的,必須使用單引號(hào)引起來(lái),例如'NULL'、'NOT NULL'或者'NONULL'。
   例子:
   Use cust
   Exec sp_addtype ssn,'Varchar(11)',"Not Null'
   創(chuàng)建一個(gè)用戶(hù)定義的數(shù)據(jù)類(lèi)型 ssn,其基于的系統(tǒng)數(shù)據(jù)類(lèi)型是變長(zhǎng)為11 的字符,不允許空。
   例子:
   Use cust
   Exec sp_addtype birthday,datetime,'Null'
   創(chuàng)建一個(gè)用戶(hù)定義的數(shù)據(jù)類(lèi)型 birthday,其基于的系統(tǒng)數(shù)據(jù)類(lèi)型是 DateTime,允許空。
   例子:
   Use master
   Exec sp_addtype telephone,'varchar(24),'Not Null'
   Eexc sp_addtype fax,'varchar(24)','Null'   創(chuàng)建兩個(gè)數(shù)據(jù)類(lèi)型,即 telephone 和 fax
(2)刪除用戶(hù)定義的數(shù)據(jù)類(lèi)型

   當(dāng)用戶(hù)定義的數(shù)據(jù)類(lèi)型不需要時(shí),可刪除。刪除用戶(hù)定義的數(shù)據(jù)類(lèi)型的命令是 sp_droptype {'type'}。
   例子:
   Use master
   Exec sp_droptype 'ssn'
   注意:當(dāng)表中的列還正在使用用戶(hù)定義的數(shù)據(jù)類(lèi)型時(shí),或者在其上面還綁定有默認(rèn)或者規(guī)則時(shí),這種用戶(hù)定義的數(shù)據(jù)類(lèi)型不能刪除。