sql server 字段類型詳解 sqlserver字段類型詳解

 
 
 
 

bit    整型 
bit數據類型是整型,其值只能是0、1或空值。這種數據類型用於存儲只有兩種可能值的數據,如Yes 或No、True 或False 、On 或Off.   html

注意:很省空間的一種數據類型,若是可以知足需求應該儘可能多用。sql

 

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個字節. ide

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

decimal   精確數值型 
decimal 數據類型能用來存儲從-10的38次冪-1到10的38次冪-1的固定精度和範圍的數值型數據。使用這種數據類型時,必須指定範圍和精度。 範圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數函數

numeric   精確數值型 
numeric數據類型與decimal 類似。

smallmoney    貨幣型 
smallmoney 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-214748.3648 到214748.3647 之間的數據,精確到貨幣單位的萬分之一sqlserver

money   貨幣型 
money數據類型用來表示錢和貨幣值。這種數據類型能存儲從-9220億到9220 億之間的數據,精確到貨幣單位的萬分之一  

float    近似數值型            
float 數據類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是由於在其範圍內不是全部的數都能精確表示。浮點數能夠是從-1.79E+308到1.79E+308 之間的任意數 

real     近似數值型           
real 數據類型像浮點數同樣,是近似數值類型。它能夠表示數值在-3.40E+38到3.40E+38之間的浮點數post

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)數字數據類型 

  數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數
  整數由正整數和負整數組成,例如 3九、2五、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數據存儲的存儲空間。