天天看點

【DataBase】sqlserver字段類型詳解

bit   

整型 

bit資料類型是整型,其值隻能是0、1或空值。這種資料類型用于存儲隻有兩種可能值的資料,如Yes 或No、True 或False 、On

或Off.   

注意:很省空間的一種資料類型,如果能夠滿足需求應該盡量多用。

tinyint   整型 

tinyint

資料類型能存儲從0到255 之間的整數。它在你隻打算存儲有限數目的數值時很有用。這種資料類型在資料庫中占用1 個位元組. 

注意:如果bit類型太單調不能滿足您的需求,您可以考慮用tinyint類型,因為這個類型相對也是比較安全的,不接受惡意腳本内容的嵌入。

smallint    

整型  

smallint 資料類型可以存儲從-

2的15次幂(-32768)到2的15次幂(32767)之間的整數。這種資料類型對存儲一些常限定在特定範圍内的數值型資料非常有用。這種資料類型在資料庫裡占用2

位元組空間. 

注意:如果tinyint類型太單調不能滿足您的需求,您可以考慮用smallint類型,因為這個類型相對也是比較安全的,不接受惡意腳本内容的嵌入。 

int    整型 

int 資料類型可以存儲從- 2的31次幂(-2147483648)到2的31次幂

(2147483 647)之間的整數。存儲到資料庫的幾乎所有數值型的資料都可以用這種資料類型。這種資料類型在資料庫裡占用4個位元組. 

注意:如果smallint也不能夠滿足您的需求,您可以考慮用長度更大的int類型。

decimal  

精确數值型 

decimal

資料類型能用來存儲從-10的38次幂-1到10的38次幂-1的固定精度和範圍的數值型資料。使用這種資料類型時,必須指定範圍和精度。

範圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數

numeric  

numeric資料類型與decimal 相似。

smallmoney   

貨币型 

smallmoney 資料類型用來表示錢和貨币值。這種資料類型能存儲從-214748.3648 到214748.3647

之間的資料,精确到貨币機關的萬分之一

money  

money資料類型用來表示錢和貨币值。這種資料類型能存儲從-9220億到9220

億之間的資料,精确到貨币機關的萬分之一  

float   

近似數值型            

float

資料類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是因為在其範圍内不是所有的數都能精确表示。浮點數可以是從-1.79E+308到1.79E+308

之間的任意數 

real    

近似數值型           

real

資料類型像浮點數一樣,是近似數值類型。它可以表示數值在-3.40E+38到3.40E+38之間的浮點數

Smalldatetime  

日期時間型          

smalldatetime

資料類型用來表示從1900年1月1日到2079年6月6日間的日期和時間,精确到一分鐘  

datetime  

datetime資料類型用來表示日期和時間。這種資料類型存儲從1753年1月1日到9999年12月31日間所有的日期和時間資料,

精确到三百分之一秒或3.33毫秒 . 

cursor    特殊資料型 

cursor

資料類型是一種特殊的資料類型,它包含一個對遊标的引用。這種資料類型用在存儲過程中,而且建立表時不能用 

timestamp  

特殊資料型          

timestamp

資料類型是一種特殊的資料類型,用來建立一個資料庫範圍内的唯一數位。

一個表中隻能有一個timestamp列。每次插入或修改一行時,timestamp列的值都會改變。盡管它的名字中有“time”,

但timestamp列不是人們可識别的日期。在一個資料庫裡,timestamp值是唯一的  

Uniqueidentifier   

Uniqueidentifier資料類型用來存儲一個全局唯一辨別符,即GUID。GUID确實是全局唯一的。這個數幾乎沒有機會在另一個系統中被重建。可以使用NEWID

函數或轉換一個字元串為唯一

辨別符來初始化具有唯一辨別符的列 .

char   

字元型              

char資料類型用來存儲指定長度的定長非統一編碼型的資料。當定義一列為此類型時,你必須指定列長。當你總能知道要存儲的資料的長度時,此資料類型很有用。例如,當你按郵政編碼加4個字元格式來存儲資料時,你知道總要用到10個字元。此資料類型的列寬最大為8000

個字元.

varchar  

varchar資料類型,同char類型一樣,用來存儲非統一編碼型字元資料。與char

型不一樣,此資料類型為變長。當定義一列為該資料類型時,你要指定該列的最大長度。

它與char資料類型最大的差別是,存儲的長度不是列長,而是資料的長度   .

text   

text

資料類型用來存儲大量的非統一編碼型字元資料。這種資料類型最多可以有231-1或20億個字元.

nchar   

統一編碼字元型   

nchar

資料類型用來存儲定長統一編碼字元型資料。統一編碼用雙位元組結構來存儲每個字元,而不是用單位元組(普通文本中的情況)。它允許大量的擴充字元。此資料類型能存儲4000種字元,使用的位元組空間上增加了一倍.

nvarchar   

統一編碼字元型    

nvarchar

資料類型用作變長的統一編碼字元型資料。此資料類型能存儲4000種字元,使用的位元組空間增加了一倍.

ntext   

ntext 資料類型用來存儲大量的統一編碼字元型資料。這種資料類型能存儲230

-1或将近10億個字元,且使用的位元組空間增加了一倍

binary   

二進制資料類型   

binary資料類型用來存儲可達8000

位元組長的定長的二進制資料。當輸入表的内容接近相同的長度時,你應該使用這種資料類型.

varbinary    

varbinary 資料類型用來存儲可達8000

位元組長的變長的二進制資料。當輸入表的内容大小可變時,你應該使用這種資料類型  

image   

二進制資料類型    

image

資料類型用來存儲變長的二進制資料,最大可達231-1或大約20億位元組  

---------------------------------------------------

(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 的字元,不允許空。

  Use cust

  Exec sp_addtype

birthday,datetime,‘Null‘

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

DateTime,允許空。

  Use master

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的整型數字 

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

decimal的同義詞 

從-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可變精度的數字 

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

smalldatetime  

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

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

uniqueidentifier  

全球唯一辨別符GUID 

char  

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

變長非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) 

------------------------------------- 

Bit 

1位,值為0或1 

     Int 

Integer 

4位元組,值為-2^31~2^31-1 

Smallint 

2位元組,值為-2^15~2^15-1 

Tinyint 

1位元組,值為0~255 

     Decimal

(p,s) 

數字資料,固定精度為P,寬度為S 

Numeric 

Money 

8位元組,存放貨币類型,值為-2^63~2^63-1 

     Small

money 

4位元組,存放貨币類型,值為-214748.3648~+214748.3647近似數值資料類型 

Float (n) 

N在1~24之間,4位元組,7位精度 

N=1~7為real 

N在25~53之間,8位元組,15位精度 

=8~15為float 

Datetime 

8位元組,描述某天的日期和時刻,值的精确度為1/300秒 

Smalldatetime 

4位元組,描述某天的日期和時刻,精度為分鐘 

Cursor  

對遊标的引用 

Timestamp 

8位元組,存放在資料庫内唯一的資料 

Uniqueidentifier 

16位元組,存放全局唯一辨別(GUID) 

     Char

(n) 

非unicode字元串的固定長度,n=1~8000 

     Character

(n)

Varchar (n) 

可變長度,非unicode字元串n=1~8000 

varying(n) 

Text 

伺服器代碼頁中可變長度非unicode資料。最大長度為231-1個字元 

Nchar 

固定長度unicode字元串n=1~4000 

     National character

(n), 

     National

char(n) 

Nvarchar 

Ntext 

可變長度unicode資料,最大長度為230-1個字元 

text 

Binary (n) 

固定長度二進制資料,n在1~8000之間,存儲空間為n+4位元組 

     Varbinary

可變長度二進制資料,n=1~8000 

     Binary varying

Tmage 

可變長度二進制資料,大小為0~231-1 

注意: 

     1)

對于數值型資料類型,寬度(scale)是指存儲在小數點後的數字位數,而精度(precision)是指能存儲的包含小數點在内的所有數字位數。 

2) money和small money的存儲寬度為4。 

     3)

時間戳列值在每一行更新時系統自動更新,時間戳列不能是關鍵字或關鍵字的一部分。 

     4)

唯一辨別資料類型不能使用算術操作符(如+、-等),這種資料類型隻能使用相等比較操作。Unicode是所有字元集的一緻存儲資料的标準。它要使用兩倍于非Unicode資料存儲的存儲空間。