數據類型是數據的一種屬性,是數據所表示信息的類型。任何一種語言都有它自己所固有的數據類型,SQL Server提供一下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 固定長度(最多爲8K)的二進制數據類型。
binary [ ( n ) ]
固定長度的 n 個字節二進制數據。N 必須從 1 到 8,000。存儲空間大小爲 n+4 字節。
·varbinary 可變長度(最多爲8K)的二進制數據類型。
varbinary [ ( n ) ]
n 個字節變長二進制數據。n 必須從 1 到 8,000。存儲空間大小爲實際輸入數據長度 +4
個字節,而不是 n 個字節。輸入的數據長度可能爲 0 字節。在 SQL-92 中 varbinary 的
同義詞爲 binary varying。
·image 用來存儲長度超過 8 KB 的可變長度的二進制數據。
除非數據長度超過 8KB,否則一般宜用 varbinary 類型來存儲二進制數據。一般用來存放 Microsoft Word 文檔、Microsoft Excel 電子表格、包含位圖的圖像、圖形交換格式 (GIF) 文件和聯合圖像專家組 (JPEG) 文件。
在 Image 數據類型中存儲的數據是以位字符串存儲的,不是由 SQL Server 解釋的,必須由應用程序來解釋。例如,應用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數據存儲在 Image 數據類型中。
2、字符數據類型
字符數據由字母、符號和數字組成。使用 char、varchar 和 text 數據類型存儲。
·char 固定長度(不超過 8 KB)的字符數據類型。
char[(n)]
長度爲 n 個字節的固定長度且非 Unicode 的字符數據。n 必須是一個介於 1 和 8,000
之間的數值。存儲大小爲 n 個字節。char 在 SQL-92 中的同義詞爲 character。
·varchar 可變長度(不超過 8 KB)的字符數據類型。
varchar[(n)]
長度爲 n 個字節的可變長度且非 Unicode 的字符數據。n 必須是一個介於 1 和 8,000
之間的數值。存儲大小爲輸入數據的字節的實際長度,而不是 n 個字節。所輸入的數據字
符長度可以爲零。varchar 在SQL-92 中的同義詞爲char varying 或character varying。
·text 數據類型的列可用於存儲大於 8KB 的 ASCII 字符。
例如,由於 HTML 文檔均由 ASCII 字符組成且一般長於 8KB,所以用瀏覽器查看之前應在 SQL Server 中存儲在 text 列中。
3、Unicode數據類型
使用 Unicode 數據類型,列可存儲由 Unicode 標準定義的任何字符,包含由不同字符集定義的所有字符。Unicode 數據使用 SQL Server 中的 nchar、varchar 和 ntext 數據類型進行存儲。
·nchar 固定長度(至多爲 4000 個 Unicode 字符)的Unicode數據類型。
nchar(n)
包含n 個字符的固定長度Unicode字符數據。n的值必須介於1與4,000之間。存儲大小爲n字
節的兩倍。nchar 在 SQL-92 中的同義詞爲 national char 和 national character。
·nvarchar ( varchar ) 是可變長度 Unicode 數據的數據類型。
nvarchar(n)
包含 n 個字符的可變長度 Unicode 字符數據。n 的值必須介於 1 與 4,000 之間。
字節的存儲大小是所輸入字符個數的兩倍。所輸入的數據字符長度可以爲零。nvarchar
在 SQL-92 中的同義詞爲 national char varying 和 national character varying。
·ntext 當列中任意項超過 4000 個 Unicode字符時使用。
4、日期和時間數據類型
日期和時間數據由有效的日期或時間組成。例如,有效日期和時間數據既包括"4/01/98 12:15:00:00:00 PM",也包括"1:28:29:15:01 AM 8/17/98"。在 Microsoft® SQL Server™ 2000 中,日期和時間數據使用 datetime 和 smalldatetime 數據類型存儲。
·datetime
數據類型存儲從 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期。
每個數值要求 8 個字節的存儲空間。
·smalldatetime
數據類型存儲從 1900 年 1 月 1 日至 2079 年 6 月 6 日的日期。
每個數值要求 4 個字節的存儲空間。
·設置日期
格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、
YDM、MYD 和 DYM。在默認情況下,日期格式爲MDY。
5、數字數據類型
數字數據只包含數字。數字數據包括正數、負數、小數、分數和整數。
·整型數據
整型數據由負整數或正整數組成,如 -15、0、5 和 2509。在 Microsoft® SQL Server™
2000 中,整型數據使用 bigint、int、smallint 和 tinyint 數據類型存儲。bigint 數據類
型可存儲的數字範圍比 int 數據類型廣。int 數據類型比 smallint 數據類型的存儲範圍
大,而 smallint 的數值範圍又比 tinyint 類型大。
bigint 存儲從-2^63 (-9223372036854775808)到2^63-1(9223372036854775807) 範圍內的
數字。存儲大小爲 8 個字節。
int 存儲範圍是-2,147,483,648至2,147,483,647(每個值需4個字節的存儲空間)。
smallint 存儲範圍只有 -32,768 至 32,767(每個值需 2 個字節的存儲空間)。
tinyint 只能存儲 0 至 255 範圍內的數字(每個值需 1 個字節的存儲空間)。
·小數數據
Decimal 數據包含存儲在最小有效數上的數據。在 SQL Server中,小數數據使用 decimal 或 numeric 數據類型存儲。存儲 decimal 或 numeric 數值所需的字節數取決於該數據的數字總數和小數點右邊的小數位數。例如,存儲數值 19283.29383 比存儲 1.1 需要更多的字節。在 SQL Server中,numeric 數據類型等價於 decimal 數據類型。
·近似數字數據
近似數字(浮點)數據包括按二進制計數系統所能提供的最大精度保留的數據。在 SQL Server 中,近似數字數據以 float 和 real 數據類型存儲。例如,分數 1/3 表示成小數形式爲 0.333333(循環小數),該數字不能以近似小數數據精確表示。因此,從 SQL Server 獲取的值可能並不準確代表存儲在列中的原始數據。又如以 .3, .6, .7 結尾的浮點數均爲數字近似值。
float |
-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308 |
取決於 n 的值 |
real |
-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38 |
4 字節
|
float [ (n) ]
其中 n 爲用於存儲 float 數值尾數的位數,以科學記數法表示,因此可以確定精度和存儲大小。如果指定了 n,則它必須是介於 1 和 53 之間的某個值。n 的默認值爲 53。
n value | 精度 | 存儲大小 |
---|---|---|
1-24 |
7 位數 |
4 字節 |
25-53 |
15 位數 |
8 字節 |
注意: |
---|
SQL Server 2005 將 n 視爲下列兩個可能值之一。如果 1<=n<=24,則將 n 視爲 24。如果 25<=n<=53,則將 n 視爲 53。 |
SQL Server float[(n)] 數據類型從 1 到 53 之間的所有 n 值均符合 SQL-92 標準。double precision 的同義詞爲 float(53)。
real 的 SQL-92 同義詞爲 float(24)。
6、貨幣數據類型
貨幣數據表示正的或負的貨幣值。在 Microsoft® SQL Server™ 2000 中使用 money 和 smallmoney 數據類型存儲貨幣數據。貨幣數據存儲的精確度爲四位小數。
·money 存儲範圍是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807
(需 8 個字節的存儲空間)。
·smallmoney 存儲範圍是 -214,748.3648 至 214,748.3647(需 4 個字節的存儲空間)。
·如果數值超過了上述範圍,則可使用 decimal 數據類型代替。
7、特殊數據類型
特殊數據包括不能用前面所述的二進制、字符、Unicode、日期和時間、數字和貨幣數據類型表示的數據。
Microsoft® SQL Server™ 2000 包含四種特殊數據類型:
·timestamp
用於表示 SQL Server 在一行上的活動順序,按二進制格式以遞增的數字來表示。當表中的行發生變動時,用從 @@DBTS 函數獲得的當前數據庫的時間戮值來更新時間戮。timestamp 數據與插入或修改數據的日期和時間無關。若要自動記錄表中數據更改的時間,使用 datetime 或 smalldatetime 數據類型記錄事件或觸發器。SQL Serve 中 rowversion 是 timestamp 的同義詞。
·bit
bit 數據類型只能包括 0 或 1。可以用 bit 數據類型代表 TRUE 或 FALSE、YES 或 NO。例如,詢問客戶是否爲初次訪問的問題可存儲在 bit 列中。
·uniqueidentifier
以一個 16 位的十六進制數表示全局唯一標識符 (GUID)。當需要在多行中唯一標識某一行時可使用 GUID。例如,可使用 unique_ identifier 數據類型定義一個客戶標識代碼列,以編輯公司來自多個國家/地區的總的客戶名錄。
·sql_variant
一種存儲 SQL Server 所支持的各種數據類型(text、ntext、timestamp 和 sql_variant 除外)值的數據類型。
·table
一種特殊的數據類型,存儲供以後處理的結果集。table 數據類型只能用於定義 table 類型的局部變量或用戶定義函數的返回值。
·用戶定義
允許使用用戶定義數據類型,例如,product_code 可設計爲基於 char 數據類型的兩個大寫字母后跟 5 位供應商號碼的格式。
--------------------------------------------------------------------------------
-
用戶定義的數據類型
用戶定義的數據類型基於在 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)
Access 數據類型與 MS SQL 數據類型的相應
文本 nvarchar(n)
備註 ntext
數字(長整型) int
數字(整型) smallint
數字(單精度) real
數字(雙精度) float
數字(字節) tinyint
貨幣 money
日期 smalldatetime
布爾 bit
*********************************************************************************************************************************
Nvarchar:可變長度的中文
Nchar:固定長度的中文
varchar:可變長度的字符
用於中文時加N,可變長度時加var
當爲固定長度時,當內容不夠時用空格補充,所以可能會用於trim();
可變長度不用