SQL SERVER的數(shù)據(jù)類型
1.SQL SERVER的數(shù)據(jù)類型
數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何一種計(jì)算機(jī)語言都定義了自己的數(shù)據(jù)類型。當(dāng)然,不同的程序語言都具有不同的特點(diǎn),所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不同。SQLServer 提供了 25 種數(shù)據(jù)類型:
- 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)二進(jìn)制數(shù)據(jù)類型
二進(jìn)制數(shù)據(jù)包括 Binary、Varbinary 和 ImageBinary 數(shù)據(jù)類型既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)] 是 n 位固定的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個(gè)字節(jié)。
Varbinary[(n)] 是 n 位變長度的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個(gè)字節(jié),不是n 個(gè)字節(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ù)類型存儲。例如,因?yàn)?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 標(biāo)準(zhǔn)定義的字符。在 Unicode 標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。使用Unicode數(shù)據(jù)類型,所戰(zhàn)勝的窨是使用非 Unicode 數(shù)據(jù)類型所占用的窨大小的兩倍。
在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar、Nvarchar 和 Ntext 數(shù)據(jù)類型存儲。使用這種字符類型存儲的列可以存儲多個(gè)字符集中的字符。當(dāng)列的長度變化時(shí),應(yīng)該使用Nvarchar 字符類型,這時(shí)最多可以存儲 4000 個(gè)字符。當(dāng)列的長度固定不變時(shí),應(yīng)該使用 Nchar 字符類型,同樣,這時(shí)最多可以存儲4000 個(gè)字符。當(dāng)使用 Ntext 數(shù)據(jù)類型時(shí),該列可以存儲多于 4000 個(gè)字符。
(4)日期和時(shí)間數(shù)據(jù)類型
日期和時(shí)間數(shù)據(jù)類型包括 Datetime 和 Smalldatetime兩種類型日期和時(shí)間數(shù)據(jù)類型由有效的日期和時(shí)間組成。例如,有效的日期和時(shí)間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個(gè)數(shù)據(jù)類型是日期在前,時(shí)間在后一個(gè)數(shù)據(jù)類型是霎時(shí)間在前,日期在后。在 Microsoft SQL Server中,日期和時(shí)間數(shù)據(jù)類型包括Datetime 和 Smalldatetime 兩種類型時(shí),所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結(jié)束(每一個(gè)值要求 8 個(gè)存儲字節(jié))。使用 Smalldatetime 數(shù)據(jù)類型時(shí),所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結(jié)束(每一個(gè)值要求 4 個(gè)存儲字節(jié))。
日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認(rèn)情況下,日期格式為MDY。
例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式
(5)數(shù)字?jǐn)?shù)據(jù)類型
數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù)、小數(shù)(浮點(diǎn)數(shù))和整數(shù)整數(shù)由正整數(shù)和負(fù)整數(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(每一個(gè)值要求4個(gè)字節(jié)存儲空間)。使用 Smallint 數(shù)據(jù)類型時(shí),存儲數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個(gè)值要求2個(gè)字節(jié)存儲空間)。使用Tinyint 數(shù)據(jù)類型時(shí),存儲數(shù)據(jù)的范圍是從0 到255(每一個(gè)值要求1個(gè)字節(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。例如,三分之一這個(gè)分?jǐn)?shù)記作。3333333,當(dāng)使用近似數(shù)據(jù)類型時(shí)能準(zhǔn)確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲在該列中數(shù)據(jù)不完全一樣。
(6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量 。
在 Microsoft SQL Server 中,貨幣數(shù)據(jù)的數(shù)據(jù)類型是Money 和 SmallmoneyMoney數(shù)據(jù)類型要求 8 個(gè)存儲字節(jié),Smallmoney 數(shù)據(jù)類型要求 4 個(gè)存儲字節(jié)。
(7)特殊數(shù)據(jù)類型
特殊數(shù)據(jù)類型包括前面沒有提過的數(shù)據(jù)類型。特殊的數(shù)據(jù)類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。Timestamp 用于表示SQL Server 活動(dòng)的先后順序,以二進(jìn)投影的格式表示。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時(shí)間沒有關(guān)系。
Bit 由 1 或者 0 組成。當(dāng)表示真或者假、ON 或者 OFF 時(shí),使用 Bit 數(shù)據(jù)類型。例如,詢問是否是每一次訪問的客戶機(jī)請求可以存儲在這種數(shù)據(jù)類型的列中。
Uniqueidentifier 由 16 字節(jié)的十六進(jìn)制數(shù)字組成,表示一個(gè)全局唯一的。當(dāng)表的記錄行要求唯一時(shí),GUID是非常有用。例如,在客戶標(biāo)識號列使用這種數(shù)據(jù)類型可以區(qū)別不同的客戶。
2.用戶定義的數(shù)據(jù)類型
用戶定義的數(shù)據(jù)類型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類型。當(dāng)幾個(gè)表中必須存儲同一種數(shù)據(jù)類型時(shí),并且為保證這些列有相同的數(shù)據(jù)類型、長度和可空性時(shí),可以使用用戶定義的數(shù)據(jù)類型。例如,可定義一種稱為 postal_code 的數(shù)據(jù)類型,它基于 Char 數(shù)據(jù)類型。當(dāng)創(chuàng)建用戶定義的數(shù)據(jù)類型時(shí),必須提供三個(gè)數(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)建一個(gè)用戶定義的數(shù)據(jù)類型 ssn,其基于的系統(tǒng)數(shù)據(jù)類型是變長為11 的字符,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創(chuàng)建一個(gè)用戶定義的數(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)建兩個(gè)數(shù)據(jù)類型,即 telephone 和 fax
(2)刪除用戶定義的數(shù)據(jù)類型
當(dāng)用戶定義的數(shù)據(jù)類型不需要時(shí),可刪除。刪除用戶定義的數(shù)據(jù)類型的命令是 sp_droptype {'type'}。例子:
Use master
Exec sp_droptype 'ssn'
注意:當(dāng)表中的列還正在使用用戶定義的數(shù)據(jù)類型時(shí),或者在其上面還綁定有默認(rèn)或者規(guī)則時(shí),這種用戶定義的數(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í)間數(shù)據(jù),最小時(shí)間單位為百分之三秒或3.33毫秒 |
smalldatetime | 從1900年1月1日到2079年6月6日的日期和時(shí)間數(shù)據(jù),最小時(shí)間單位為分鐘 |
timestamp | 時(shí)間戳,一個(gè)數(shù)據(jù)庫寬度的唯一數(shù)字 |
uniqueidentifier | 全球唯一標(biāo)識符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 | 定長二進(jìn)制數(shù)據(jù),最大長度為8000 |
varbinary | 變長二進(jìn)制數(shù)據(jù),最大長度為8000 |
image | 變長二進(jìn)制數(shù)據(jù),最大長度為2^31-1(2G) |
相關(guān)文章
sql server 創(chuàng)建臨時(shí)表的使用說明
這篇文章主要介紹了sql server 創(chuàng)建臨時(shí)表的使用說明,需要的朋友可以參考下2015-11-11Sql Server使用cursor處理重復(fù)數(shù)據(jù)過程詳解
本節(jié)主要介紹了Sql Server cursor的使用,以處理重復(fù)數(shù)據(jù)為例,需要的朋友可以參考下2014-08-08數(shù)據(jù)庫觸發(fā)器DB2和SqlServer有哪些區(qū)別
大部分?jǐn)?shù)據(jù)庫語句的基本語法是相同的,但具體到的每一種數(shù)據(jù)庫,又有些不一樣,例如觸發(fā)器,DB2和SQL Server兩種很大的不同。對數(shù)據(jù)庫觸發(fā)器DB2和SqlServer有哪些區(qū)別感興趣的朋友一起看看本文吧2015-11-11詳解SQL Server 中 JSON_MODIFY 的使用
SQL Server 從 2016 開始支持了一些 JSON操作,最近的項(xiàng)目里也是好多地方字段直接存成了 JSON,需要了解一下怎么在SQL Server 中操作 JSON.這篇文章主要介紹了SQL Server 中 JSON_MODIFY 的使用,需要的朋友可以參考下2019-11-11sql添加數(shù)據(jù)后返回受影響行數(shù)據(jù)
Inserted 表用于存儲 INSERT 和 UPDATE 語句所影響的行的副本。在一個(gè)插入或更新事務(wù)處理中,新建行被同時(shí)添加到 inserted 表和觸發(fā)器表中2011-11-11解決Navicat連接本地sqlserver數(shù)據(jù)庫成功后沒有庫表數(shù)據(jù)的問題
本文主要給大家介紹了如何解決Navicat連接本地sqlserver數(shù)據(jù)庫成功后沒有庫表數(shù)據(jù)的問題,文中有詳細(xì)的原因分析和解決方法,具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10