SQL數(shù)據(jù)類型詳解
(1)二進制數(shù)據(jù)類型
二進制數(shù)據(jù)包括 Binary、Varbinary 和 ImageBinary 數(shù)據(jù)類型既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)] 是 n 位固定的二進制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個字節(jié)。
Varbinary[(n)] 是 n 位變長度的二進制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個字節(jié),不是n 個字節(jié)。
在 Image 數(shù)據(jù)類型中存儲的數(shù)據(jù)是以位字符串存儲的,不是由 SQL Server 解釋的,必須由應(yīng)用程序來解釋。例如,應(yīng)用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲在 Image 數(shù)據(jù)類型中。
(2)字符數(shù)據(jù)類型
字符數(shù)據(jù)的類型包括 Char,Varchar 和 Text字符數(shù)據(jù)是由任何字母、符號和數(shù)字任意組合而成的數(shù)據(jù)。
Varchar 是變長字符數(shù)據(jù),其長度不超過 8KB。Char 是定長字符數(shù)據(jù),其長度最多為 8KB。超過 8KB 的ASCII 數(shù)據(jù)可以使用Text數(shù)據(jù)類型存儲。例如,因為 Html 文檔全部都是 ASCII 字符,并且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數(shù)據(jù)類型存儲在SQL Server 中。
(3)Unicode 數(shù)據(jù)類型
Unicode 數(shù)據(jù)類型包括 Nchar,Nvarchar 和Ntext在 Microsoft SQL Server 中,傳統(tǒng)的非 Unicode 數(shù)據(jù)類型允許使用由特定字符集定義的字符。在 SQL Server安裝過程中,允許選擇一種字符集。使用 Unicode 數(shù)據(jù)類型,列中可以存儲任何由Unicode 標準定義的字符。在 Unicode 標準中,包括了以各種字符集定義的全部字符。使用Unicode數(shù)據(jù)類型,所戰(zhàn)勝的窨是使用非 Unicode 數(shù)據(jù)類型所占用的窨大小的兩倍。
在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar、Nvarchar 和 Ntext 數(shù)據(jù)類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應(yīng)該使用Nvarchar 字符類型,這時最多可以存儲 4000 個字符。當列的長度固定不變時,應(yīng)該使用 Nchar 字符類型,同樣,這時最多可以存儲4000 個字符。當使用 Ntext 數(shù)據(jù)類型時,該列可以存儲多于 4000 個字符。
(4)日期和時間數(shù)據(jù)類型
日期和時間數(shù)據(jù)類型包括 Datetime 和 Smalldatetime兩種類型日期和時間數(shù)據(jù)類型由有效的日期和時間組成。例如,有效的日期和時間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個數(shù)據(jù)類型是日期在前,時間在后一個數(shù)據(jù)類型是霎時間在前,日期在后。在 Microsoft SQL Server中,日期和時間數(shù)據(jù)類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結(jié)束(每一個值要求 8 個存儲字節(jié))。使用 Smalldatetime 數(shù)據(jù)類型時,所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結(jié)束(每一個值要求 4 個存儲字節(jié))。
日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為MDY。
例如,當執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式
(5)數(shù)字數(shù)據(jù)類型
數(shù)字數(shù)據(jù)只包含數(shù)字。數(shù)字數(shù)據(jù)類型包括正數(shù)和負數(shù)、小數(shù)(浮點數(shù))和整數(shù)整數(shù)由正整數(shù)和負整數(shù)組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數(shù)存儲的數(shù)據(jù)類型是 Int,Smallint和 Tinyint。Int 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍,而 Smallint 據(jù)類型存儲數(shù)據(jù)的范圍大于Tinyint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍。使用 Int 數(shù)據(jù)狗昔存儲數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節(jié)存儲空間)。使用 Smallint 數(shù)據(jù)類型時,存儲數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個值要求2個字節(jié)存儲空間)。使用Tinyint 數(shù)據(jù)類型時,存儲數(shù)據(jù)的范圍是從0 到255(每一個值要求1個字節(jié)存儲空間)。
精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來確定。
在SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類型是 Float 和 Real。例如,三分之一這個分數(shù)記作。3333333,當使用近似數(shù)據(jù)類型時能準確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲在該列中數(shù)據(jù)不完全一樣。
(6)貨幣數(shù)據(jù)表示正的或者負的貨幣數(shù)量 。
在 Microsoft SQL Server 中,貨幣數(shù)據(jù)的數(shù)據(jù)類型是Money 和 SmallmoneyMoney數(shù)據(jù)類型要求 8 個存儲字節(jié),Smallmoney 數(shù)據(jù)類型要求 4 個存儲字節(jié)。
(7)特殊數(shù)據(jù)類型
特殊數(shù)據(jù)類型包括前面沒有提過的數(shù)據(jù)類型。特殊的數(shù)據(jù)類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。Timestamp 用于表示SQL Server 活動的先后順序,以二進投影的格式表示。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時間沒有關(guān)系。
Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit 數(shù)據(jù)類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數(shù)據(jù)類型的列中。
Uniqueidentifier 由 16 字節(jié)的十六進制數(shù)字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數(shù)據(jù)類型可以區(qū)別不同的客戶。
2.用戶定義的數(shù)據(jù)類型
用戶定義的數(shù)據(jù)類型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類型。當幾個表中必須存儲同一種數(shù)據(jù)類型時,并且為保證這些列有相同的數(shù)據(jù)類型、長度和可空性時,可以使用用戶定義的數(shù)據(jù)類型。例如,可定義一種稱為 postal_code 的數(shù)據(jù)類型,它基于 Char 數(shù)據(jù)類型。當創(chuàng)建用戶定義的數(shù)據(jù)類型時,必須提供三個數(shù):數(shù)據(jù)類型的名稱、所基于的系統(tǒng)數(shù)據(jù)類型和數(shù)據(jù)類型的可空性。
(1)創(chuàng)建用戶定義的數(shù)據(jù)類型
創(chuàng)建用戶定義的數(shù)據(jù)類型可以使用 Transact-SQL 語句。系統(tǒng)存儲過程 sp_addtype 可以來創(chuàng)建用戶定義的數(shù)據(jù)類型。其語法形式如下:sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用戶定義的數(shù)據(jù)類型的名稱。system_data_type 是系統(tǒng)提供的數(shù)據(jù)類型,例如 Decimal、Int、Char 等等。 null_type 表示該數(shù)據(jù)類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
創(chuàng)建一個用戶定義的數(shù)據(jù)類型 ssn,其基于的系統(tǒng)數(shù)據(jù)類型是變長為11 的字符,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創(chuàng)建一個用戶定義的數(shù)據(jù)類型 birthday,其基于的系統(tǒng)數(shù)據(jù)類型是 DateTime,允許空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
創(chuàng)建兩個數(shù)據(jù)類型,即 telephone 和 fax
(2)刪除用戶定義的數(shù)據(jù)類型
當用戶定義的數(shù)據(jù)類型不需要時,可刪除。刪除用戶定義的數(shù)據(jù)類型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:當表中的列還正在使用用戶定義的數(shù)據(jù)類型時,或者在其上面還綁定有默認或者規(guī)則時,這種用戶定義的數(shù)據(jù)類型不能刪除。
SQL SERVER的字段類型說明
以下為SQL SERVER7.0以上版本的字段類型說明。SQL SERVER6.5的字段類型說明請參考SQL SERVER提供的說明。
字段類型 | 描述 |
bit | 0或1的整型數(shù)字 |
int | 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數(shù)字 |
smallint | 從-2^15(-32,768)到2^15(32,767)的整型數(shù)字 |
tinyint | 從0到255的整型數(shù)字 |
decimal | 從-10^38到10^38-1的定精度與有效位數(shù)的數(shù)字 |
numeric | decimal的同義詞 |
money | 從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數(shù)據(jù),最小貨幣單位千分之十 |
smallmoney | 從-214,748.3648到214,748.3647的貨幣數(shù)據(jù),最小貨幣單位千分之十 |
float | 從-1.79E+308到1.79E+308可變精度的數(shù)字 |
real | 從-3.04E+38到3.04E+38可變精度的數(shù)字 |
datetime | 從1753年1月1日到9999年12日31的日期和時間數(shù)據(jù),最小時間單位為百分之三秒或3.33毫秒 |
smalldatetime | 從1900年1月1日到2079年6月6日的日期和時間數(shù)據(jù),最小時間單位為分鐘 |
timestamp | 時間戳,一個數(shù)據(jù)庫寬度的唯一數(shù)字 |
uniqueidentifier | 全球唯一標識符GUID |
char | 定長非Unicode的字符型數(shù)據(jù),最大長度為8000 |
varchar | 變長非Unicode的字符型數(shù)據(jù),最大長度為8000 |
text | 變長非Unicode的字符型數(shù)據(jù),最大長度為2^31-1(2G) |
nchar | 定長Unicode的字符型數(shù)據(jù),最大長度為8000 |
nvarchar | 變長Unicode的字符型數(shù)據(jù),最大長度為8000 |
ntext | 變長Unicode的字符型數(shù)據(jù),最大長度為2^31-1(2G) |
binary | 定長二進制數(shù)據(jù),最大長度為8000 |
varbinary | 變長二進制數(shù)據(jù),最大長度為8000 |
image | 變長二進制數(shù)據(jù),最大長度為2^31-1(2G) |
相關(guān)文章
SQL Server中統(tǒng)計每個表行數(shù)的快速方法
這篇文章主要介紹了SQL Server中統(tǒng)計每個表行數(shù)的快速方法,本文不使用傳統(tǒng)的count()函數(shù),因為它比較慢和占用資源,本文講解的是另一種方法,需要的朋友可以參考下2015-02-02MMC提示不能打開文件SQLServerEnterpriseManager.MSC的解決方法
MMC不能打開文件SQLServerEnterpriseManager.MSC的解決方法,主要是不能很方便的打開Microsoft SQL 企業(yè)管理器2010-05-05SQL Server誤區(qū)30日談 第4天 DDL觸發(fā)器就是INSTEAD OF觸發(fā)器
DDL觸發(fā)器的實現(xiàn)原理其實就是一個AFTER觸發(fā)器。這個意思是先發(fā)生DDL操作,然后觸發(fā)器再捕捉操作(當然如果你在觸發(fā)器內(nèi)寫了Rollback,則也可能回滾)2013-01-01sql server把退款總金額拆分到盡量少的多個訂單中詳解
這篇文章主要給大家介紹了關(guān)于sql server把退款總金額拆分到盡量少的多個訂單中的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12