天天看點

SQL資料類型詳解

sql資料類型詳解

(1)二進制資料類型

  二進制資料包括 binary、varbinary 和 image

  binary 資料類型既可以是固定長度的(binary),也可以是變長度的。

  binary[(n)] 是 n 位固定的二進制資料。其中,n 的取值範圍是從 1 到 8000。其存儲窨的大小是 n + 4 個位元組。

  varbinary[(n)] 是 n 位變長度的二進制資料。其中,n 的取值範圍是從 1 到 8000。其存儲窨的大小是 n + 4個位元組,不是n 個位元組。

  在 image 資料類型中存儲的資料是以位字元串存儲的,不是由 sql server 解釋的,必須由應用程式來解釋。例如,應用程式可以使用bmp、tief、gif 和 jpeg 格式把資料存儲在 image 資料類型中。

(2)字元資料類型

  字元資料的類型包括 char,varchar 和 text

  字元資料是由任何字母、符号和數字任意組合而成的資料。

  varchar 是變長字元資料,其長度不超過 8kb。char 是定長字元資料,其長度最多為 8kb。超過 8kb 的ascii 資料可以使用text資料類型存儲。例如,因為 html 文檔全部都是 ascii 字元,并且在一般情況下長度超過 8kb,是以這些文檔可以 text 資料類型存儲在sql server 中。

(3)unicode 資料類型

  unicode 資料類型包括 nchar,nvarchar 和ntext

  在 microsoft sql server 中,傳統的非 unicode 資料類型允許使用由特定字元集定義的字元。在 sql server安裝過程中,允許選擇一種字元集。使用 unicode 資料類型,列中可以存儲任何由unicode 标準定義的字元。在 unicode 标準中,包括了以各種字元集定義的全部字元。使用unicode資料類型,所戰勝的窨是使用非 unicode 資料類型所占用的窨大小的兩倍。

  在 sql server 中,unicode 資料以 nchar、nvarchar 和 ntext 資料類型存儲。使用這種字元類型存儲的列可以存儲多個字元集中的字元。當列的長度變化時,應該使用nvarchar 字元類型,這時最多可以存儲 4000 個字元。當列的長度固定不變時,應該使用 nchar 字元類型,同樣,這時最多可以存儲4000 個字元。當使用 ntext 資料類型時,該列可以存儲多于 4000 個字元。

(4)日期和時間資料類型

  日期和時間資料類型包括 datetime 和 smalldatetime兩種類型

  日期和時間資料類型由有效的日期和時間組成。例如,有效的日期和時間資料包括“4/01/98 12:15:00:00:00 pm”和“1:28:29:15:01am 8/17/98”。前一個資料類型是日期在前,時間在後一個資料類型是霎時間在前,日期在後。在 microsoft sql server中,日期和時間資料類型包括datetime 和 smalldatetime 兩種類型時,所存儲的日期範圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結束(每一個值要求 8 個存儲位元組)。使用 smalldatetime 資料類型時,所存儲的日期範圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲位元組)。

  日期的格式可以設定。設定日期格式的指令如下:

  set dateformat {format | @format _var|

  其中,format | @format_var 是日期的順序。有效的參數包括 mdy、dmy、ymd、ydm、myd 和 dym。在預設情況下,日期格式為mdy。

  例如,當執行 set dateformat ymd 之後,日期的格式為年 月 日 形式;當執行 set dateformat dmy 之後,日期的格式為日 月有年 形式

(5)數字資料類型

  數字資料隻包含數字。數字資料類型包括正數和負數、小數(浮點數)和整數

  整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 micrsoft sql server 中,整數存儲的資料類型是    int,smallint和 tinyint。int 資料類型存儲資料的範圍大于 smallint 資料類型存儲資料的範圍,而 smallint 據類型存儲資料的範圍大于tinyint 資料類型存儲資料的範圍。使用 int 資料狗昔存儲資料的範圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個位元組存儲空間)。使用 smallint 資料類型時,存儲資料的範圍從 -32 768 到 32 767(每一個值要求2個位元組存儲空間)。使用tinyint 資料類型時,存儲資料的範圍是從0 到255(每一個值要求1個位元組存儲空間)。

  精确小婁資料在 sql server 中的資料類型是 decimal 和 numeric。這種資料所占的存儲空間根據該資料的位數後的位數來确定。

  在sql server 中,近似小數資料的資料類型是 float 和 real。例如,三分之一這個分數記作。3333333,當使用近似資料類型時能準确表示。是以,從系統中檢索到的資料可能與存儲在該列中資料不完全一樣。

(6)貨币資料表示正的或者負的貨币數量 。

  在 microsoft sql server 中,貨币資料的資料類型是money 和 smallmoney

  money資料類型要求 8 個存儲位元組,smallmoney 資料類型要求 4 個存儲位元組。

(7)特殊資料類型

  特殊資料類型包括前面沒有提過的資料類型。特殊的資料類型有3種,即    timestamp、bit 和 uniqueidentifier。

  timestamp 用于表示sql server 活動的先後順序,以二進投影的格式表示。timestamp 資料與插入資料或者日期和時間沒有關系。

  bit 由 1 或者 0 組成。當表示真或者假、on 或者 off 時,使用 bit 資料類型。例如,詢問是否是每一次通路的客戶機請求可以存儲在這種資料類型的列中。

  uniqueidentifier 由 16 位元組的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,guid是非常有用。例如,在客戶辨別号列使用這種資料類型可以差別不同的客戶。

2.使用者定義的資料類型

  使用者定義的資料類型基于在 microsoft sql server 中提供的資料類型。當幾個表中必須存儲同一種資料類型時,并且為保證這些列有相同的資料類型、長度和可空性時,可以使用使用者定義的資料類型。例如,可定義一種稱為   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'、'not null'或者'nonull'。

  例子:

  use cust

  exec sp_addtype ssn,'varchar(11)',"not null'

  建立一個使用者定義的資料類型 ssn,其基于的系統資料類型是變長為11 的字元,不允許空。

  exec sp_addtype birthday,datetime,'null'

  建立一個使用者定義的資料類型 birthday,其基于的系統資料類型是 datetime,允許空。

  use master

  exec sp_addtype telephone,'varchar(24),'not null'

  eexc sp_addtype fax,'varchar(24)','null'

  建立兩個資料類型,即 telephone 和 fax

(2)删除使用者定義的資料類型

  當使用者定義的資料類型不需要時,可删除。删除使用者定義的資料類型的指令是 sp_droptype {'type'}。

  exec sp_droptype 'ssn'

  注意:當表中的列還正在使用使用者定義的資料類型時,或者在其上面還綁定有預設或者規則時,這種使用者定義的資料類型不能删除。

sql server的字段類型說明

  以下為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)

轉載自:http://www.cnblogs.com/linckle/archive/2006/01/12/316010.html