MSSQL資料庫的欄位型別總結

秋高工作室發表於2016-03-22

資料型別是資料的一種屬性,表示資料所表示資訊的型別。任何一種計算機語言都定義了自己的資料型別。當然,不同的程式語言都具有不同的特點,所定義的資料型別的各類和名稱都或多或少有些不同。SQLServer提供了25種資料型別:
  ·Binary[(n)]
  ·Varbinary[(n)]
  ·Char[(n)]
  ·Varchar[(n)]
  ·Nchar[(n)]
  ·Nvarchar[(n)]
  ·Datetime
  ·Smalldatetime
  ·Decimal[(p[,s])]
  ·Numeric[(p[,s])]
  ·Float[(n)]
  ·Real
  ·Int
  ·Smallint
  ·Tinyint
  ·Money
  ·Smallmoney
  ·Bit
  ·Cursor
  ·Sysname
  ·Timestamp
  ·Uniqueidentifier
  ·Text
  ·Image
  ·Ntext
(1)二進位制資料型別

  二進位制資料包括Binary、Varbinary和Image
  Binary資料型別既可以是固定長度的(Binary),也可以是變長度的。
  Binary[(n)]是n位固定的二進位制資料。其中,n的取值範圍是從1到8000。其儲存窨的大小是n+4個位元組。
  Varbinary[(n)]是n位變長度的二進位制資料。其中,n的取值範圍是從1到8000。其儲存窨的大小是n+4個位元組,不是n個位元組。
  在Image資料型別中儲存的資料是以位字串儲存的,不是由SQLServer解釋的,必須由應用程式來解釋。例如,應用程式可以使用BMP、TIEF、GIF和JPEG格式把資料儲存在Image資料型別中。
(2)字元資料型別

  字元資料的型別包括Char,Varchar和Text
  字元資料是由任何字母、符號和數字任意組合而成的資料。
   Varchar是變長字元資料,其長度不超過8KB。Char是定長字元資料,其長度最多為8KB。超過8KB的ASCII資料可以使用Text資料型別儲存。例如,因為Html文件全部都是ASCII字元,並且在一般情況下長度超過8KB,所以這些文件可以Text資料型別儲存在SQLServer中。
(3)Unicode資料型別

  Unicode資料型別包括Nchar,Nvarchar和Ntext
  在MicrosoftSQLServer中,傳統的非 Unicode資料型別允許使用由特定字符集定義的字元。在SQLServer安裝過程中,允許選擇一種字符集。使用Unicode資料型別,列中可以存 儲任何由Unicode標準定義的字元。在Unicode標準中,包括了以各種字符集定義的全部字元。使用Unicode資料型別,所戰勝的窨是使用非 Unicode資料型別所佔用的窨大小的兩倍。
  在SQLServer中,Unicode資料以Nchar、Nvarchar和Ntext資料型別儲存。使用這種字元型別儲存的列可以儲存多個字符集中的字元。當列的長度變化時,應該使用Nvarchar字元型別,這時最多可以儲存4000個字 符。當列的長度固定不變時,應該使用Nchar字元型別,同樣,這時最多可以儲存4000個字元。當使用Ntext資料型別時,該列可以儲存多於4000 個字元。
(4)日期和時間資料型別

  日期和時間資料型別包括Datetime和Smalldatetime兩種型別
  日期和時間資料型別由有效的日期和時間組成。例如, 有效的日期和時間資料包括“4/01/9812:15:00:00:00PM”和“1:28:29:15:01AM8/17/98”。前一個資料型別是日 期在前,時間在後一個資料型別是霎時間在前,日期在後。在MicrosoftSQLServer中,日期和時間資料型別包括Datetime和 Smalldatetime兩種型別時,所儲存的日期範圍是從1753年1月1日開始,到9999年12月31日結束(每一個值要求8個儲存位元組)。使用 Smalldatetime資料型別時,所儲存的日期範圍是1900年1月1日開始,到2079年12月31日結束(每一個值要求4個儲存位元組)。
  日期的格式可以設定。設定日期格式的命令如下:
  SetDateFormat{format|@format_var|
  其中,format|@format_var是日期的順序。有效的引數包括MDY、DMY、YMD、YDM、MYD和DYM。在預設情況下,日期格式為MDY。
  例如,當執行SetDateFormatYMD之後,日期的格式為年月日形式;當執行SetDateFormatDMY之後,日期的格式為日月有年形式
(5)數字資料型別

  數字資料只包含數字。數字資料型別包括正數和負數、小數(浮點數)和整數
  整數由正整數和負整陣列成,例如39、25、0-2和 33967。在MicrsoftSQLServer中,整數儲存的資料型別是  Int,Smallint和Tinyint。Int資料型別儲存資料的範 圍大於Smallint資料型別儲存資料的範圍,而Smallint據型別儲存資料的範圍大於Tinyint資料型別儲存資料的範圍。使用Int資料狗昔 儲存資料的範圍是從-2147483648到2147483647(每一個值要求4個位元組儲存空間)。使用Smallint資料型別時,儲存資料的範圍從 -32768到32767(每一個值要求2個位元組儲存空間)。使用Tinyint資料型別時,儲存資料的範圍是從0到255(每一個值要求1個位元組儲存空 間)。
  精確小婁資料在SQLServer中的資料型別是Decimal和Numeric。這種資料所佔的儲存空間根據該資料的位數後的位數來確定。
  在SQLServer中,近似小數資料的資料型別是Float和Real。例如,三分之一這個分數記作。3333333,當使用近似資料型別時能準確表示。因此,從系統中檢索到的資料可能與儲存在該列中資料不完全一樣。
(6)貨幣資料表示正的或者負的貨幣數量。

  在MicrosoftSQLServer中,貨幣資料的資料型別是Money和Smallmoney
  Money資料型別要求8個儲存位元組,Smallmoney資料型別要求4個儲存位元組。

(7)特殊資料型別

  特殊資料型別包括前面沒有提過的資料型別。特殊的資料型別有3種,即  Timestamp、Bit和Uniqueidentifier。
  Timestamp用於表示SQLServer活動的先後順序,以二進投影的格式表示。Timestamp資料與插入資料或者日期和時間沒有關係。
  Bit由1或者0組成。當表示真或者假、ON或者OFF時,使用Bit資料型別。例如,詢問是否是每一次訪問的客戶機請求可以儲存在這種資料型別的列中。
  Uniqueidentifier由16位元組的十六進位制數字組成,表示一個全域性唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種資料型別可以區別不同的客戶。
2.使用者定義的資料型別

  使用者定義的資料型別基於在MicrosoftSQLServer中提供的資料型別。當幾個表中必須儲存同一種資料型別時,並且為保證這些列有相同的資料型別、長度和可空性時,可以使用使用者定義的資料型別。例如,可定義一種稱為  postal_code的資料型別,它基於Char資料型別。
  當建立使用者定義的資料型別時,必須提供三個數:資料型別的名稱、所基於的系統資料型別和資料型別的可空性。
(1)建立使用者定義的資料型別

  建立使用者定義的資料型別可以使用Transact-SQL語句。系統儲存過程sp_addtype可以來建立使用者定義的資料型別。其語法形式如下:
  sp_addtype{type},[,system_data_bype][,'null_type']
  其中,type是使用者定義的資料型別的名稱。system_data_type是系統提供的資料型別,例如Decimal、Int、Char  等等。null_type表示該資料型別是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOTNULL'或者'NONULL'。
  例子:
  Usecust
  Execsp_addtypessn,'Varchar(11)',"NotNull'
  建立一個使用者定義的資料型別ssn,其基於的系統資料型別是變長為11的字元,不允許空。
  例子:
  Usecust
  Execsp_addtypebirthday,datetime,'Null'
  建立一個使用者定義的資料型別birthday,其基於的系統資料型別是DateTime,允許空。
  例子:
  Usemaster
  Execsp_addtypetelephone,'varchar(24),'NotNull'
  Eexcsp_addtypefax,'varchar(24)','Null'
  建立兩個資料型別,即telephone和fax
(2)刪除使用者定義的資料型別

  當使用者定義的資料型別不需要時,可刪除。刪除使用者定義的資料型別的命令是sp_droptype{'type'}。
  例子:
  Usemaster
  Execsp_droptype'ssn'
  注意:當表中的列還正在使用使用者定義的資料型別時,或者在其上面還繫結有預設或者規則時,這種使用者定義的資料型別不能刪除。
SQLSERVER的欄位型別說明

以下為SQL SERVER7.0以上版本的欄位型別說明。SQL SERVER6.5的欄位型別說明請參考SQL SERVER提供的說明。

  

欄位型別

描述

bit

0或1的整型數字

int

從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字

smallint

從-2^15(-32,768)到2^15(32,767)的整型數字

tinyint

從0到255的整型數字

 

 

decimal

從-10^38到10^38-1的定精度與有效位數的數字

numeric

decimal的同義詞

 

 

money

從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣資料,最小貨幣單位千分之十

smallmoney

從-214,748.3648到214,748.3647的貨幣資料,最小貨幣單位千分之十

 

 

float

從-1.79E+308到1.79E+308可變精度的數字

real

從-3.04E+38到3.04E+38可變精度的數字

 

 

datetime

從1753年1月1日到9999年12日31的日期和時間資料,最小時間單位為百分之三秒或3.33毫秒

smalldatetime

從1900年1月1日到2079年6月6日的日期和時間資料,最小時間單位為分鐘

 

 

timestamp

時間戳,一個資料庫寬度的唯一數字

uniqueidentifier

全球唯一識別符號GUID

 

 

char

定長非Unicode的字元型資料,最大長度為8000

varchar

變長非Unicode的字元型資料,最大長度為8000

text

變長非Unicode的字元型資料,最大長度為2^31-1(2G)

 

 

nchar

定長Unicode的字元型資料,最大長度為8000

nvarchar

變長Unicode的字元型資料,最大長度為8000

ntext

變長Unicode的字元型資料,最大長度為2^31-1(2G)

 

 

binary

定長二進位制資料,最大長度為8000

varbinary

變長二進位制資料,最大長度為8000

image

變長二進位制資料,最大長度為2^31-1(2G)


相關文章