數據類型
數據類弄是數據的一種屬性
表示數據所表示信息的類型
任何一種計算機語言都定義了自己的數據類型
當然
不同的程序語言都具有不同的特點
所定義的數據類型的各類和名稱都或多或少有些不同
SQL Server 提供了
種數據類型
·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
(
)二進制數據類型
二進制數據包括 Binary
Varbinary 和 Image
Binary 數據類型既可以是固定長度的(Binary)
也可以是變長度的
Binary[(n)] 是 n 位固定的二進制數據
其中
n 的取值范圍是從
到
其存儲窨的大小是 n +
個字節
Varbinary[(n)] 是 n 位變長度的二進制數據
其中
n 的取值范圍是從
到
其存儲窨的大小是 n +
個字節
不是 n 個字節
在 Image 數據類型中存儲的數據是以位字符串存儲的
不是由 SQL Server 解釋的
必須由應用程序來解釋
例如
應用程序可以使用 BMP
TIEF
GIF 和 JPEG 格式把數據存儲在 Image 數據類型中
(
)字符數據類型
字符數據的類型包括 Char
Varchar 和 Text
字符數據是由任何字母
符號和數字任意組合而成的數據
Varchar 是變長字符數據
其長度不超過
KB
Char 是定長字符數據
其長度最多為
KB
超過
KB 的ASCII 數據可以使用Text 數據類型存儲
例如
因為 Html 文檔全部都是 ASCII 字符
並且在一般情況下長度超過
KB
所以這些文檔可以 Text 數據類型存儲在 SQL Server 中
(
)Unicode 數據類型
Unicode 數據類型包括 Nchar
Nvarchar 和Ntext
在 Microsoft SQL Server 中
傳統的非 Unicode 數據類型允許使用由特定字符集定義的字符
在 SQL Server 安裝過程中
允許選擇一種字符集
使用 Unicode 數據類型
列中可以存儲任何由Unicode 標准定義的字符
在 Unicode 標准中
包括了以各種字符集定義的全部字符
使用Unicode 數據類型
所戰勝的窨是使用非 Unicode 數據類型所占用的窨大小的兩倍
在 SQL Server 中
Unicode 數據以 Nchar
Nvarchar 和 Ntext 數據類型存儲
使用這種字符類型存儲的列可以存儲多個字符集中的字符
當列的長度變化時
應該使用 Nvarchar 字符類型
這時最多可以存儲
個字符
當列的長度固定不變時
應該使用 Nchar 字符類型
同樣
這時最多可以存儲
個字符
當使用 Ntext 數據類型時
該列可以存儲多於
個字符
(
)日期和時間數據類型
日期和時間數據類型包括 Datetime 和 Smalldatetime 兩種類型
日期和時間數據類型由有效的日期和時間組成
例如
有效的日期和時間數據包括
/
/
:
:
:
:
PM
和
:
:
:
:
AM
/
/
前一個數據類型是日期在前
時間在後一個數據類型是霎時間在前
日期在後
在 Microsoft SQL Server 中
日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時
所存儲的日期范圍是從
年
月
日開始
到
年
月
日結束(每一個值要求
個存儲字節)
使用 Smalldatetime 數據類型時
所存儲的日期范圍是
年
月
日 開始
到
年
月
日結束(每一個值要求
個存儲字節)
日期的格式可以設定
設置日期格式的命令如下
Set DateFormat {format | @format _var|
其中
format | @format_var 是日期的順序
有效的參數包括 MDY
DMY
YMD
YDM
MYD 和 DYM
在默認情況下
日期格式為 MDY
例如
當執行 Set DateFormat YMD 之後
日期的格式為年 月 日 形式
當執行 Set DateFormat DMY 之後
日期的格式為 日 月有年 形式
(
)數字數據類型
數字數據只包含數字
數字數據類型包括正數和負數
小數(浮點數)和整數
整數由正整數和負整數組成
例如
和
在 Micrsoft SQL Server 中
整數存儲的數據類型是 Int
Smallint 和 Tinyint
Int 數據類型存儲數據的范圍大於 Smallint 數據類型存儲數據的范圍
而 Smallint 據類型存儲數據的范圍大於 Tinyint 數據類型存儲數據的范圍
使用 Int 數據狗昔存儲數據的范圍是從
到
(每一個值要求
個字節存儲空間)
使用 Smallint 數據類型時
存儲數據的范圍從
到
(每一個值要求
個字節存儲空間)
使用 Tinyint 數據類型時
存儲數據的范圍是從
到
(每一個值要求
個字節存儲空間)
精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric
這種數據所占的存儲空間根據該數據的位數後的位數來確定
在SQL Server 中
近似小數數據的數據類型是 Float 和 Real
例如
三分之一這個分數記作
當使用近似數據類型時能准確表示
因此
從系統中檢索到的數據可能與存儲在該列中數據不完全一樣
(
)貨幣數據表示正的或者負的貨幣數量
在 Microsoft SQL Server 中
貨幣數據的數據類型是Money 和 Smallmoney
Money 數據類型要求
個存儲字節
Smallmoney 數據類型要求
個存儲字節
(
)特殊數據類型
特殊數據類型包括前面沒有提過的數據類型
特殊的數據類型有
種
即 Timestamp
Bit 和 Uniqueidentifier
Timestamp 用於表示SQL Server 活動的先後順序
以二進投影的格式表示
Timestamp 數據與插入數據或者日期和時間沒有關系
Bit 由
或者
組成
當表示真或者假
ON 或者 OFF 時
使用 Bit 數據類型
例如
詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中
Uniqueidentifier 由
字節的十六進制數字組成
表示一個全局唯一的
當表的記錄行要求唯一時
GUID是非常有用
例如
在客戶標識號列使用這種數據類型可以區別不同的客戶
用戶定義的數據類型
用戶定義的數據類型基於在 Microsoft SQL Server 中提供的數據類型
當幾個表中必須存儲同一種數據類型時
並且為保證這些列有相同的數據類型
長度和可空性時
可以使用用戶定義的數據類型
例如
可定義一種稱為 postal_code 的數據類型
它基於 Char 數據類型
當創建用戶定義的數據類型時
必須提供三個數
數據類型的名稱
所基於的系統數據類型和數據類型的可空性
(
)創建用戶定義的數據類型
創建用戶定義的數據類型可以使用 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(
)
Not Null
創建一個用戶定義的數據類型 ssn
其基於的系統數據類型是變長為
的字符
不允許空
例子
Use cust
Exec sp_addtype birthday
datetime
Null
創建一個用戶定義的數據類型 birthday
其基於的系統數據類型是 DateTime
允許空
例子
Use master
Exec sp_addtype telephone
varchar(
)
Not Null
Eexc sp_addtype fax
varchar(
)
Null
創建兩個數據類型
即 telephone 和 fax
(
)刪除用戶定義的數據類型
當用戶定義的數據類型不需要時
可刪除
刪除用戶定義的數據類型的命令是 sp_droptype {
type
}
例子
Use master
Exec sp_droptype
ssn
注意
當表中的列還正在使用用戶定義的數據類型時
或者在其上面還綁定有默認或者規則時
這種用戶定義的數據類型不能刪除
From:http://tw.wingwit.com/Article/program/SQLServer/201311/11231.html