欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL?Server中的數(shù)據(jù)類型詳解

 更新時(shí)間:2022年05月21日 16:55:42   作者:springsnow  
本文詳細(xì)講解了SQL?Server中的數(shù)據(jù)類型,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

T-SQL語言和SQLServer數(shù)據(jù)庫中的數(shù)據(jù)通常需要定義一個(gè)數(shù)據(jù)類型,數(shù)據(jù)類型定義了對(duì)象可以容納的數(shù)據(jù)的種類。

哪些對(duì)象需要數(shù)據(jù)類型

(1)、表和視圖的列:
在定義表或視圖時(shí),其列需要定義數(shù)據(jù)類型。

(2)、存儲(chǔ)過程的參數(shù):
在定義存儲(chǔ)過程的T-SQL代碼中定義參數(shù)的數(shù)據(jù)類型。

(3)、變量:
如果在T-SQL中使用變量,需要定義數(shù)據(jù)類型。

(4)、帶返回值的函數(shù):
返回一個(gè)或多個(gè)特定類型數(shù)據(jù)值的T-SQL函數(shù)中的返回值需要定義數(shù)據(jù)類型。

(5)、帶返回代碼的存儲(chǔ)過程:
具有返回代碼的存儲(chǔ)過程。

一、 整數(shù)數(shù)據(jù)類型

1、bit

bit數(shù)據(jù)類型是整型,其值只能是0、1或空值。這種數(shù)據(jù)類型用于存儲(chǔ)只有兩種可能值的數(shù)據(jù),如Yes 或No、True 或False 、On 或Off.   
注意:很省空間的一種數(shù)據(jù)類型,如果能夠滿足需求應(yīng)該盡量多用。每個(gè)TINYINT類型的數(shù)據(jù)占用1個(gè)字節(jié)的存儲(chǔ)空間。

  • bit值保存為1、0或NULL 的整數(shù)數(shù)據(jù)類型。1代表true,0代表false。
  • 在插入、修改 bit 數(shù)據(jù)時(shí),使用 0 或 1。
    SQL Server將字符串值“TRUE”(字符串不分大小寫,或者數(shù)字字符'1')轉(zhuǎn)換為1,將“FALSE”(字符串不分大小寫,或者數(shù)字字符'0')轉(zhuǎn)換為0。將任何非零值轉(zhuǎn)換為1。
  • 在c# 中讀取數(shù)據(jù)庫數(shù)據(jù)時(shí),可以直接用bool型讀取該字段,會(huì)直接轉(zhuǎn)換為true/false。

2、tinyint

tinyint數(shù)據(jù)類型存儲(chǔ)從0 到255 之間的所有正整數(shù)。每個(gè)tinyint類型的數(shù)據(jù)占用1個(gè)字節(jié)的存儲(chǔ)空間。

3、smallint

smallint 數(shù)據(jù)類型存儲(chǔ)從-2的15次方( -32768) 到2的15次方-1( 32767 )之間的所有正負(fù)整數(shù)。
每個(gè)smallint類型的數(shù)據(jù)占用2個(gè)字節(jié)的存儲(chǔ)空間,其中1 位表示整數(shù)值的正負(fù)號(hào),其它15 位表示整數(shù)值的長度和大小。

4、int (integer)

int (或 integer)數(shù)據(jù)類型存儲(chǔ)從-2的31次方 (-2147483648) 到2的31次方-1 (2147483647) 之間的所有正負(fù)整數(shù)。
每個(gè)INT 類型的數(shù)據(jù)按4個(gè)字節(jié)存儲(chǔ),其中1 位表示整數(shù)值的正負(fù)號(hào),其它31 位表示整數(shù)值的長度和大小。

5、bigint

bigint數(shù)據(jù)類型存儲(chǔ)從-2^63 (-9 223372036854775807) 到2^63-1( 9223372036854775807) 之間的所有正負(fù)整數(shù)。
每個(gè)BIGINT 類型的數(shù)據(jù)占用8個(gè)字節(jié)的存儲(chǔ)空間。

二、 浮點(diǎn)數(shù)據(jù)類型

浮點(diǎn)數(shù)據(jù)類型用于存儲(chǔ)十進(jìn)制小數(shù)。浮點(diǎn)數(shù)值的數(shù)據(jù)在SQL Server 中采用上舍入(Round up 或稱為只入不舍)方式進(jìn)行存儲(chǔ)。
所謂上舍入是指,當(dāng)(且僅當(dāng))要舍入的數(shù)是一個(gè)非零數(shù)時(shí),對(duì)其保留數(shù)字部分的最低有效位上的數(shù)值加1 ,并進(jìn)行必要的進(jìn)位。若一個(gè)數(shù)是上舍入數(shù),其絕對(duì)值不會(huì)減少。
如:對(duì)3.14159265358979 分別進(jìn)行2 位和12位舍入,結(jié)果為3.15 和3.141592653590。

1、real: 近似數(shù)值型

real數(shù)據(jù)類型可精確到第7 位小數(shù),其范圍為從-3.40E -38 到3.40E +38。 每個(gè)real類型的數(shù)據(jù)占用4 個(gè)字節(jié)的存儲(chǔ)空間。

2、float[(n)]:近似數(shù)值型

float數(shù)據(jù)類型可精確到第15 位小數(shù),其范圍為從-1.79E -308 到1.79E +308。 每個(gè)FLOAT 類型的數(shù)據(jù)占用8 個(gè)字節(jié)的存儲(chǔ)空間。 
float數(shù)據(jù)類型可寫為FLOAT[ n ]的形式。n 指定float數(shù)據(jù)的精度。n 為1到15 之間的整數(shù)值。當(dāng)n 取1 到7 時(shí),實(shí)際上是定義了一個(gè)real類型的數(shù)據(jù),系統(tǒng)用4 個(gè)字節(jié)存儲(chǔ)它;
當(dāng)n 取8 到15 時(shí),系統(tǒng)認(rèn)為其是float類型,用8 個(gè)字節(jié)存儲(chǔ)它。

3、decimal[p [s] ]

decimal數(shù)據(jù)類型可以提供小數(shù)所需要的實(shí)際存儲(chǔ)空間,但也有一定的限制,您可以用2 到17 個(gè)字節(jié)來存儲(chǔ)從-10的38次方-1 到10的38次方-1 之間的數(shù)值。
可將其寫為decimal[ p [s] ]的形式,p 和s 確定了精確的比例和數(shù)位。其中p 表示可供存儲(chǔ)的值的總位數(shù)(不包括小數(shù)點(diǎn)),缺省值為18; s 表示小數(shù)點(diǎn)后的位數(shù),缺省值為0。
例如:decimal (15 5),表示共有15 位數(shù),其中整數(shù)10 位,小數(shù)5。  

4、numeric[p [s] ]

numeric數(shù)據(jù)類型與decimal 數(shù)據(jù)類型完全相同。
注意:SQL Server 為了和前端的開發(fā)工具配合,其所支持的數(shù)據(jù)精度默認(rèn)最大為28位。但可以通過使用命令來執(zhí)行sqlserver.exe程序以啟動(dòng)SQL Server,可改變默認(rèn)精度。

5、smallMoney貨幣型

smallMoney 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲(chǔ)從-214748.3648 到214748.3647 之間的數(shù)據(jù),精確到貨幣單位的萬分之一。smallmoney 數(shù)據(jù)類型要求 4 個(gè)存儲(chǔ)字節(jié)。

6、money貨幣型

money數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲(chǔ)從-9220億到9220 億之間的數(shù)據(jù),精確到貨幣單位的萬分之一。money數(shù)據(jù)類型要求 8 個(gè)存儲(chǔ)字節(jié)。

三、字符數(shù)據(jù)類型

字符數(shù)據(jù)類型是使用最多的數(shù)據(jù)類型。它可以用來存儲(chǔ)各種字母、數(shù)字符號(hào)、特殊符號(hào)。一般情況下,使用字符類型數(shù)據(jù)時(shí)須在其前后加上單引號(hào)’或雙引號(hào)” 。

1、char[(n)]

char數(shù)據(jù)類型的定義形式為char[(n)] 。 以char類型存儲(chǔ)的每個(gè)字符和符號(hào)占一個(gè)字節(jié)的存儲(chǔ)空間。n 表示所有字符所占的存儲(chǔ)空間,n 的取值為1 到8000, 
即可容納8000 個(gè)ANSI 字符。若不指定n 值,則系統(tǒng)默認(rèn)值為1。若輸入數(shù)據(jù)的字符數(shù)小于n,則系統(tǒng)自動(dòng)在其后添加空格來填滿設(shè)定好的空間。若輸入的數(shù)據(jù)過長,將會(huì)截掉其超出部分。

如果沒有在數(shù)據(jù)定義或變量聲明語句中指定 n,則默認(rèn)長度為 1如果在使用 CAST 和 CONVERT 函數(shù)時(shí)未指定 n,則默認(rèn)長度為 30。

2、nchar[(n)]

nchar數(shù)據(jù)類型的定義形式為nchar[(n)]。 它與char類型相似。不同的是nchar數(shù)據(jù)類型n的取值為1 到4000。 因?yàn)閚char類型采用UNICODE 標(biāo)準(zhǔn)字符集(CharacterSet)。 
UNICODE 標(biāo)準(zhǔn)規(guī)定每個(gè)字符占用兩個(gè)字節(jié)的存儲(chǔ)空間,所以它比非UNICODE 標(biāo)準(zhǔn)的數(shù)據(jù)類型多占用一倍的存儲(chǔ)空間。使用UNICODE 標(biāo)準(zhǔn)的好處是因其使用兩個(gè)字節(jié)做存儲(chǔ)單位,
其一個(gè)存儲(chǔ)單位的容納量就大大增加了,可以將全世界的語言文字都囊括在內(nèi),在一個(gè)數(shù)據(jù)列中就可以同時(shí)出現(xiàn)中文、英文、法文、德文等,而不會(huì)出現(xiàn)編碼沖突。

3、varchar[(n| max )]

varchar數(shù)據(jù)類型的定義形式為varchar[(n| max )]。 它與char類型相似,n 的取值也為1 到8000,若輸入的數(shù)據(jù)過長,將會(huì)截掉其超出部分。
不同的是,varchar數(shù)據(jù)類型具有變動(dòng)長度的特性,因?yàn)関archar數(shù)據(jù)類型的存儲(chǔ)長度為實(shí)際數(shù)值長度,若輸入數(shù)據(jù)的字符數(shù)小于n ,則系統(tǒng)不會(huì)在其后添加空格來填滿設(shè)定好的空間。
一般情況下,由于char數(shù)據(jù)類型長度固定,因此它比varchar類型的處理速度快。

4、nvarchar[(n| max )]

nvarchar數(shù)據(jù)類型的定義形式為nvarchar [ ( n | max ) ]。它與varchar類型相似。不同的是,nvarchar數(shù)據(jù)類型采用UNICODE 標(biāo)準(zhǔn)字符集(Character Set), n 的取值為1 到4000。

5、text

text數(shù)據(jù)類型用于存儲(chǔ)大量文本數(shù)據(jù),其容量理論上為1 到2的31次方-1 (2147483647)個(gè)字節(jié),在實(shí)際應(yīng)用時(shí)需要視硬盤的存儲(chǔ)空間而定。
SQL Server 中,將text和image 類型的數(shù)據(jù)直接存放到表的數(shù)據(jù)行中。

6 、ntext

ntext數(shù)據(jù)類型與text類型相似不同的,是ntext類型采用UNICODE 標(biāo)準(zhǔn)字符集(Character Set), 因此其理論容量為230-1(1073741823)個(gè)字節(jié)。

四、 日期和時(shí)間數(shù)據(jù)類型

日期和時(shí)間數(shù)據(jù)類型及函數(shù) - SQL Server (Transact-SQL) | Microsoft 官方文檔

1、datetime :日期和時(shí)間(1753-1-1 日到 9999-12-31)

datetime 數(shù)據(jù)類型用于存儲(chǔ)日期和時(shí)間的結(jié)合體。它可以存儲(chǔ)從公元1753 年1 月1 日零時(shí)起到公元9999 年12 月31 日23 時(shí)59 分59 秒之間。精確到三百分之一秒或3.33毫秒 

2、dateTime2 (n):高精度的datetime類型(0001-01-01 到 9999-12-31)

類似于之前的datetime類型,不過其精度比較高,可以精確到小數(shù)點(diǎn)后面7位(100ns),其使用語法為:datetime2(n)。
0001-01-01 00:00:00.0000000到9999-12-31 23:59:59:9999999,表示日期和時(shí)間

使用示例:

declare @dt as datetime2(5)
set @dt = getdate()
select @dt

3、smalldatetime  :精確到分鐘,日期和時(shí)間。(1900-01-01 到 2079-06-06)不推薦。

smalldatetime 數(shù)據(jù)類型用來表示小范圍間的日期和時(shí)間,精確到一分鐘。

4、date:只表示日期:年-月-日(0001-01-01 到 9999-12-31)

按照年-月-日的格式表示日期

5、time:只表示時(shí)間:hh:mm:ss(00:00:00.0000000 到 23:59:59.9999999)

按照hh:mm:ss的格式精確表示時(shí)間

6、datetimeOffset:時(shí)間部分增加時(shí)區(qū)表示

加入了時(shí)區(qū)偏移量部分,時(shí)區(qū)偏移量表示為 [+|-] HH:MM。  必需的 + 或 - 符號(hào)指示在 UTC(通用協(xié)調(diào)時(shí)間或格林尼治標(biāo)準(zhǔn)時(shí)間)中是加上還是減去時(shí)區(qū)偏移量以獲取本地時(shí)間。

00000-01-01 00:00:00.0000000到99999-12-31 23:59:59:9999999

使用示例:

declare @dt as datetimeoffset(8)
set @dt = '2008-08-08 08:08:08.0 +8:00'
select @dt

五、二進(jìn)制數(shù)據(jù)類型

1、binary

binary 數(shù)據(jù)類型用于存儲(chǔ)二進(jìn)制數(shù)據(jù)。其定義形式為binary (n), n 表示數(shù)據(jù)的長度,取值為1 到8000 。
在使用時(shí)必須指定binary 類型數(shù)據(jù)的大小,至少應(yīng)為1 個(gè)字節(jié)。BINARY 類型數(shù)據(jù)占用n+4 個(gè)字節(jié)的存儲(chǔ)空間。
在輸入數(shù)據(jù)時(shí)必須在數(shù)據(jù)前加上字符“0X” 作為二進(jìn)制標(biāo)識(shí),如:要輸入“abc ”則應(yīng)輸入“0xabc ”。
若輸入的數(shù)據(jù)過長將會(huì)截掉其超出部分。若輸入的數(shù)據(jù)位數(shù)為奇數(shù),則會(huì)在起始符號(hào)“0X ”后添加一個(gè)0,如上述的“0xabc ”會(huì)被系統(tǒng)自動(dòng)變?yōu)?ldquo;0x0abc”。

2、varbinary

varbinary 數(shù)據(jù)類型的定義形式為varbinary (n)。 它與binary 類型相似,n 的取值也為1 到8000,若輸入的數(shù)據(jù)過長,將會(huì)截掉其超出部分。
不同的是varbinary 數(shù)據(jù)類型具有變動(dòng)長度的特性,因?yàn)関arbinary 數(shù)據(jù)類型的存儲(chǔ)長度為實(shí)際數(shù)值長度+4個(gè)字節(jié)。當(dāng)binary 數(shù)據(jù)類型允許NULL 值時(shí),將被視為varbinary 數(shù)據(jù)類型。
一般情況下,由于BINARY 數(shù)據(jù)類型長度固定,因此它比varbinary  類型的處理速度快。

3、image

image 數(shù)據(jù)類型用于存儲(chǔ)大量的二進(jìn)制數(shù)據(jù)Binary Data。其理論容量為2的31次方-1(2147483647)個(gè)字節(jié)。其存儲(chǔ)數(shù)據(jù)的模式與text數(shù)據(jù)類型相同。
通常用來存儲(chǔ)圖形等OLE Object Linking and Embedding對(duì)象連接和嵌入對(duì)象。在輸入數(shù)據(jù)時(shí)同BINARY數(shù)據(jù)類型一樣,必須在數(shù)據(jù)前加上字符“0X”作為二進(jìn)制標(biāo)識(shí)。應(yīng)用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲(chǔ)在 image 數(shù)據(jù)類型中。

六、特殊數(shù)據(jù)類型

1、 cursor:游標(biāo)引用

cursor 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,它包含一個(gè)對(duì)游標(biāo)的引用。這種數(shù)據(jù)類型用在存儲(chǔ)過程中,而且創(chuàng)建表時(shí)不能用。

T-SQL游標(biāo)

2、timestamp:時(shí)間戳

timestamp 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,用來創(chuàng)建一個(gè)數(shù)據(jù)庫范圍內(nèi)的唯一數(shù)碼。 一個(gè)表中只能有一個(gè)timestamp列。每次插入或修改一行時(shí),timestamp列的值都會(huì)改變。Timestamp 用于表示SQL Server 活動(dòng)的先后順序。盡管它的名字中有“time”, 但timestamp列不是人們可識(shí)別的日期。在一個(gè)數(shù)據(jù)庫里,timestamp值是唯一的  。timestamp的數(shù)據(jù)類型為rowVersion數(shù)據(jù)類型的同義詞。

3、uniqueIdentifier:全局唯一標(biāo)識(shí)符,即GUID

uniqueIdentifier數(shù)據(jù)類型用來存儲(chǔ)一個(gè)全局唯一標(biāo)識(shí)符,即GUID。由 16 字節(jié)的十六進(jìn)制數(shù)字組成。GUID確實(shí)是全局唯一的。這個(gè)數(shù)幾乎沒有機(jī)會(huì)在另一個(gè)系統(tǒng)中被重建??梢允褂肗EWID 函數(shù)或轉(zhuǎn)換一個(gè)字符串為唯一標(biāo)識(shí)符來初始化具有唯一標(biāo)識(shí)符的列。

例如:6F9619FF-8B86-D011-B42D-00C04FC964FF,此號(hào)碼可以通過newid()函數(shù)獲得,在全世界各地的計(jì)算機(jī)由此函數(shù)產(chǎn)生的數(shù)字不會(huì)相同。

4、sql_variant:SQL變量

用于存儲(chǔ)除文本,圖形數(shù)據(jù)和timestamp數(shù)據(jù)外的其它任何合法的Sql Server數(shù)據(jù),可以方便Sql Server的開發(fā)工作。

5、table:表

用于存儲(chǔ)對(duì)表或視圖處理后的結(jié)果集。這種新的數(shù)據(jù)類型使得變量可以存儲(chǔ)一個(gè)表,從而使函數(shù)或過程返回查詢結(jié)果更加方便、快捷。

6、xml

存儲(chǔ)xml數(shù)據(jù)的數(shù)據(jù)類型。可以在列中或者xml類型的變量中存儲(chǔ)xml實(shí)例。存儲(chǔ)的xml數(shù)據(jù)類型表示實(shí)例大小不能超過2GB。

SQL Server XML類型

七、SQL Server 2008新增數(shù)據(jù)類型

hierarchid

新增的數(shù)據(jù)類型,用于創(chuàng)建層次結(jié)構(gòu)的表,或引用位于另一位置的數(shù)據(jù)層次結(jié)構(gòu)。

八、用戶定義的數(shù)據(jù)類型

用戶定義的數(shù)據(jù)類型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類型。當(dāng)幾個(gè)表中必須存儲(chǔ)同一種數(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ù)類型的可空性。

圖形化操作:【可編程性】-->【類型】節(jié)點(diǎn),右擊【用戶定義數(shù)據(jù)類型】節(jié)點(diǎn),在彈出的框中,按照說明相應(yīng)操作即可。

(1)創(chuàng)建用戶定義的數(shù)據(jù)類型

創(chuàng)建用戶定義的數(shù)據(jù)類型可以使用 Transact-SQL 語句。系統(tǒng)存儲(chǔ)過程 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ù)類型是如何處理空值的,必須使用單引號(hào)引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:創(chuàng)建一個(gè)用戶定義的數(shù)據(jù)類型 ssn,其基于的系統(tǒng)數(shù)據(jù)類型是變長為11 的字符,不允許空。

Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'

例子:創(chuàng)建一個(gè)用戶定義的數(shù)據(jù)類型 birthday,其基于的系統(tǒng)數(shù)據(jù)類型是 DateTime,允許空。

Use cust
Exec sp_addtype birthday,datetime,'Null'

例子:創(chuàng)建兩個(gè)數(shù)據(jù)類型,即 telephone 和 fax

Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'

(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與CLR數(shù)據(jù)類型的對(duì)應(yīng)關(guān)系

到此這篇關(guān)于SQL Server數(shù)據(jù)類型的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論