MSSQL資料庫的欄位型別總結
資料型別是資料的一種屬性,表示資料所表示資訊的型別。任何一種計算機語言都定義了自己的資料型別。當然,不同的程式語言都具有不同的特點,所定義的資料型別的各類和名稱都或多或少有些不同。SQLServer提供了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資料型別既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)]是n位固定的二進位制資料。其中,n的取值範圍是從1到8000。其儲存窨的大小是n+4個位元組。
Varbinary[(n)]是n位變長度的二進位制資料。其中,n的取值範圍是從1到8000。其儲存窨的大小是n+4個位元組,不是n個位元組。
在Image資料型別中儲存的資料是以位字串儲存的,不是由SQLServer解釋的,必須由應用程式來解釋。例如,應用程式可以使用BMP、TIEF、GIF和JPEG格式把資料儲存在Image資料型別中。
(2)字元資料型別
字元資料的型別包括Char,Varchar和Text
字元資料是由任何字母、符號和數字任意組合而成的資料。
Varchar是變長字元資料,其長度不超過8KB。Char是定長字元資料,其長度最多為8KB。超過8KB的ASCII資料可以使用Text資料型別儲存。例如,因為Html文件全部都是ASCII字元,並且在一般情況下長度超過8KB,所以這些文件可以Text資料型別儲存在SQLServer中。
(3)Unicode資料型別
Unicode資料型別包括Nchar,Nvarchar和Ntext
在MicrosoftSQLServer中,傳統的非 Unicode資料型別允許使用由特定字符集定義的字元。在SQLServer安裝過程中,允許選擇一種字符集。使用Unicode資料型別,列中可以存 儲任何由Unicode標準定義的字元。在Unicode標準中,包括了以各種字符集定義的全部字元。使用Unicode資料型別,所戰勝的窨是使用非 Unicode資料型別所佔用的窨大小的兩倍。
在SQLServer中,Unicode資料以Nchar、Nvarchar和Ntext資料型別儲存。使用這種字元型別儲存的列可以儲存多個字符集中的字元。當列的長度變化時,應該使用Nvarchar字元型別,這時最多可以儲存4000個字 符。當列的長度固定不變時,應該使用Nchar字元型別,同樣,這時最多可以儲存4000個字元。當使用Ntext資料型別時,該列可以儲存多於4000 個字元。
(4)日期和時間資料型別
日期和時間資料型別包括Datetime和Smalldatetime兩種型別
日期和時間資料型別由有效的日期和時間組成。例如, 有效的日期和時間資料包括“4/01/9812:15:00:00:00PM”和“1:28:29:15:01AM8/17/98”。前一個資料型別是日 期在前,時間在後一個資料型別是霎時間在前,日期在後。在MicrosoftSQLServer中,日期和時間資料型別包括Datetime和 Smalldatetime兩種型別時,所儲存的日期範圍是從1753年1月1日開始,到9999年12月31日結束(每一個值要求8個儲存位元組)。使用 Smalldatetime資料型別時,所儲存的日期範圍是1900年1月1日開始,到2079年12月31日結束(每一個值要求4個儲存位元組)。
日期的格式可以設定。設定日期格式的命令如下:
SetDateFormat{format|@format_var|
其中,format|@format_var是日期的順序。有效的引數包括MDY、DMY、YMD、YDM、MYD和DYM。在預設情況下,日期格式為MDY。
例如,當執行SetDateFormatYMD之後,日期的格式為年月日形式;當執行SetDateFormatDMY之後,日期的格式為日月有年形式
(5)數字資料型別
數字資料只包含數字。數字資料型別包括正數和負數、小數(浮點數)和整數
整數由正整數和負整陣列成,例如39、25、0-2和 33967。在MicrsoftSQLServer中,整數儲存的資料型別是 Int,Smallint和Tinyint。Int資料型別儲存資料的範 圍大於Smallint資料型別儲存資料的範圍,而Smallint據型別儲存資料的範圍大於Tinyint資料型別儲存資料的範圍。使用Int資料狗昔 儲存資料的範圍是從-2147483648到2147483647(每一個值要求4個位元組儲存空間)。使用Smallint資料型別時,儲存資料的範圍從 -32768到32767(每一個值要求2個位元組儲存空間)。使用Tinyint資料型別時,儲存資料的範圍是從0到255(每一個值要求1個位元組儲存空
間)。
精確小婁資料在SQLServer中的資料型別是Decimal和Numeric。這種資料所佔的儲存空間根據該資料的位數後的位數來確定。
在SQLServer中,近似小數資料的資料型別是Float和Real。例如,三分之一這個分數記作。3333333,當使用近似資料型別時能準確表示。因此,從系統中檢索到的資料可能與儲存在該列中資料不完全一樣。
(6)貨幣資料表示正的或者負的貨幣數量。
在MicrosoftSQLServer中,貨幣資料的資料型別是Money和Smallmoney
Money資料型別要求8個儲存位元組,Smallmoney資料型別要求4個儲存位元組。
(7)特殊資料型別
特殊資料型別包括前面沒有提過的資料型別。特殊的資料型別有3種,即 Timestamp、Bit和Uniqueidentifier。
Timestamp用於表示SQLServer活動的先後順序,以二進投影的格式表示。Timestamp資料與插入資料或者日期和時間沒有關係。
Bit由1或者0組成。當表示真或者假、ON或者OFF時,使用Bit資料型別。例如,詢問是否是每一次訪問的客戶機請求可以儲存在這種資料型別的列中。
Uniqueidentifier由16位元組的十六進位制數字組成,表示一個全域性唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種資料型別可以區別不同的客戶。
2.使用者定義的資料型別
使用者定義的資料型別基於在MicrosoftSQLServer中提供的資料型別。當幾個表中必須儲存同一種資料型別時,並且為保證這些列有相同的資料型別、長度和可空性時,可以使用使用者定義的資料型別。例如,可定義一種稱為 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'、'NOTNULL'或者'NONULL'。
例子:
Usecust
Execsp_addtypessn,'Varchar(11)',"NotNull'
建立一個使用者定義的資料型別ssn,其基於的系統資料型別是變長為11的字元,不允許空。
例子:
Usecust
Execsp_addtypebirthday,datetime,'Null'
建立一個使用者定義的資料型別birthday,其基於的系統資料型別是DateTime,允許空。
例子:
Usemaster
Execsp_addtypetelephone,'varchar(24),'NotNull'
Eexcsp_addtypefax,'varchar(24)','Null'
建立兩個資料型別,即telephone和fax
(2)刪除使用者定義的資料型別
當使用者定義的資料型別不需要時,可刪除。刪除使用者定義的資料型別的命令是sp_droptype{'type'}。
例子:
Usemaster
Execsp_droptype'ssn'
注意:當表中的列還正在使用使用者定義的資料型別時,或者在其上面還繫結有預設或者規則時,這種使用者定義的資料型別不能刪除。
SQLSERVER的欄位型別說明
以下為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) |
相關文章
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- 主流資料庫欄位型別轉.Net型別的方法資料庫型別
- mssql sqlserver 可以儲存二進位制資料的欄位型別詳解SQLServer型別
- 轉載:Oracle常用的資料庫欄位型別Oracle資料庫型別
- 資料欄位型別匹配型別
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- 資料庫中欄位資料型別以及約束資料庫資料型別
- 修改欄位資料型別的方法資料型別
- MySQL的主鍵和欄位型別問題總結MySql型別
- 支援 enum 型別的欄位允許為空插入資料庫型別資料庫
- MSSql得到表的結構和欄位SQL
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- 【轉】修改表的欄位資料型別的方法資料型別
- Go 的資料型別總結Go資料型別
- Oracle查詢資料表結構(欄位,型別,大小,備註)Oracle型別
- yii2 從資料庫獲取內容值型別與資料庫欄位型別問題解決資料庫型別
- oracle的欄位型別Oracle型別
- JS 資料型別總結JS資料型別
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- Python的資料型別總結Python資料型別
- Mysql支援的資料型別(總結)MySql資料型別
- WHRER條件裡的資料型別必須和欄位資料型別一致資料型別
- MSSQL sysobjects type 型別彙總SQLObject型別
- sqlserver查詢一個庫所有表的欄位名及欄位型別SQLServer型別
- 保留資料庫表中的資料,把表中的欄位varchar2改成clob型別資料庫型別
- Oracle-不刪表資料,修改欄位型別Oracle型別
- 修改表的欄位型別型別
- 如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容型別資料庫
- 修復identity 型別欄位資料的跳躍(轉)IDE型別
- 欄位的資料型別隱式轉換有關係資料型別
- oracle 資料庫設定表和欄位的別名Oracle資料庫
- (2)mysql 支援的資料型別總結MySql資料型別
- MongoDB更改欄位型別MongoDB型別
- MongoDB中的欄位型別IdMongoDB型別
- oracle 修改欄位型別的方法Oracle型別
- 解密MSSQL連結資料庫的密碼解密SQL資料庫密碼
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- go 基礎總結 --- 資料型別Go資料型別