1. 程式人生 > >sqlserver欄位型別詳解

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
  Exec sp_addtype telephone,'varchar(24),'Not Null'
  Eexc sp_addtype fax,'varchar(24)','Null'
  建立兩個資料型別,即 telephone 和 fax 

(2)刪除使用者定義的資料型別 

  當用戶定義的資料型別不需要時,可刪除。刪除使用者定義的資料型別的命令是 sp_droptype {'type'}。
  例子:
  Use master
  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) 


------------------------------------- 
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 
     Char varying(n) 
Text 
     伺服器內碼表中可變長度非unicode資料。最大長度為231-1個字元 
     Nchar 
     固定長度unicode字串n=1~4000 
     National character (n), 
     National char(n) 
Nvarchar 
     固定長度unicode字串n=1~4000 
     National character varying(n) 
Ntext 
     可變長度unicode資料,最大長度為230-1個字元 
     National text 
Binary (n) 
     固定長度二進位制資料,n在1~8000之間,儲存空間為n+4位元組 
     Varbinary (n) 
     可變長度二進位制資料,n=1~8000 
     Binary varying (n) 
Tmage 
     可變長度二進位制資料,大小為0~231-1 
     注意: 
     1) 對於數值型資料型別,寬度(scale)是指儲存在小數點後的數字位數,而精度(precision)是指能儲存的包含小數點在內的所有數字位數。 
     2) money和small money的儲存寬度為4。 
     3) 時間戳列值在每一行更新時系統自動更新,時間戳列不能是關鍵字或關鍵字的一部分。 
     4) 唯一標識資料型別不能使用算術操作符(如+、-等),這種資料型別只能使用相等比較操作。Unicode是所有字符集的一致儲存資料的標準。它要使用兩倍於非Unicode資料儲存的儲存空間。