
(1) 整數(shù)型
整數(shù)包括bigint、int、smallint和tinyint,從標(biāo)識符的含義就可以看出,它們的
表示數(shù)范圍逐漸縮小。
l bigint:大整數(shù),數(shù)范圍為 -263 (-9223372)~263-1
(9223372) ,其精度為19,小數(shù)位數(shù)為0,長度為8字節(jié)。
l int:整數(shù),數(shù)范圍為 -231 (-2,147,483,648) ~231 - 1 (2,147,483,647) ,其
精度為10,小數(shù)位數(shù)為0,長度為4字節(jié)。
l smallint:短整數(shù),數(shù)范圍為 -215 (-32768) ~215 - 1 (32767) ,其精度為5,
小數(shù)位數(shù)為0,長度為2字節(jié)。
l tinyint:微短整數(shù),數(shù)范圍為 0~255,長度為1字節(jié),其精度為3,小數(shù)位數(shù)
為0,長度為1字節(jié)。
(2) 精確整數(shù)型
精確整數(shù)型數(shù)據(jù)由整數(shù)部分和小數(shù)部分構(gòu)成,其所有的數(shù)字都是有效位,能夠以
完整的精度存儲十進(jìn)制數(shù)。精確整數(shù)型包括decimal 和 numeric兩類。從功能
上說兩者完全等價,兩者的唯一區(qū)別在于decimal不能用于帶有identity關(guān)鍵字
的列。
聲明精確整數(shù)型數(shù)據(jù)的格式是numeric | decimal(p[,s]),其中p為精度,s為小
數(shù)位數(shù),s的缺省值為0。例如指定某列為精確整數(shù)型,精度為6,小數(shù)位數(shù)為
3,即decimal(6,3),那么若向某記錄的該列賦值56.342689時,該列實(shí)際存儲
的是56.3427。
decimal和numeric可存儲從 -1038 +1 到 1038 –1 的固定精度和小數(shù)位的數(shù)
字?jǐn)?shù)據(jù),它們的存儲長度隨精度變化而變化,最少為5字節(jié),最多為17字節(jié)。
l 精度為1~9時,存儲字節(jié)長度為5;
l 精度為10~19時,存儲字節(jié)長度為9;
l 精度為20~28時,存儲字節(jié)長度為13;
l 精度為29~38時,存儲字節(jié)長度為17。
例如若有聲明numeric(8,3),則存儲該類型數(shù)據(jù)需5字節(jié),而若有聲明
numeric(22,5),則存儲該類型數(shù)據(jù)需13字節(jié)。
注意:聲明精確整數(shù)型數(shù)據(jù)時,其小數(shù)位數(shù)必須小于精度;在給精確整數(shù)型數(shù)據(jù)
賦值時,必須使所賦數(shù)據(jù)的整數(shù)部分位數(shù)不大于列的整數(shù)部分的長度。
(3) 浮點(diǎn)型
浮點(diǎn)型也稱近似數(shù)值型。顧名思義,這種類型不能提供精確表示數(shù)據(jù)的精度,使
用這種類型來存儲某些數(shù)值時,有可能會損失一些精度,所以它可用于處理取值
范圍非常大且對精確度要求不是十分高的數(shù)值量,如一些統(tǒng)計量。
有兩種近似數(shù)值數(shù)據(jù)類型:float[(n)]和real,兩者通常都使用科學(xué)計數(shù)法表示數(shù)
據(jù),即形為:尾數(shù)E階數(shù),如5.6432E20,-2.98E10,1.287659E-9等。
l real:使用4字節(jié)存儲數(shù)據(jù),表數(shù)范圍為-3.40E + 38 到 3.40E + 38,數(shù)據(jù)精
度為7位有效數(shù)字。
l float:定義中的n取值范圍是1~53,用于指示其精度和存儲大小。當(dāng)n在1~
24之間時,實(shí)際上是定義了一個real型數(shù)據(jù),存儲長度為4字節(jié),精度為7位
有效數(shù)字;當(dāng)n在25~53之間時,存儲長度為8字節(jié),精度為15位有效數(shù)字。
當(dāng)缺省n時,代表n在25~53之間。float型數(shù)據(jù)的數(shù)范圍為- 1.79E+308 到
1.79E+308。
(4) 貨幣型
SQL Server提供了兩個專門用于處理貨幣的數(shù)據(jù)類型:money和smallmoney,
它們用十進(jìn)制數(shù)表示貨幣值。
l money:數(shù)據(jù)的數(shù)范圍為-263 (-922337203685477.5808)~263-1
(922337203685477.5807) ,其精度為19,小數(shù)位數(shù)為4,長度為8字節(jié)。money
的數(shù)的范圍與bigint相同,不同的只是money型有4位小數(shù),實(shí)際上,money
就是按照整數(shù)進(jìn)行運(yùn)算的,只是將小數(shù)點(diǎn)固定在末4位。
l smallmoney:數(shù)范圍為 –231 (-2,147,48.3648) ~231 - 1 (2,147,48.3647) ,
其精度為10,小數(shù)位數(shù)為4,長度為4字節(jié)。可見smallmoney與int的關(guān)系就
如同money與bigint的關(guān)系。
當(dāng)向表中插入money或smallmoney類型的值時,必須在數(shù)據(jù)前面加上貨幣表
示符號($),并且數(shù)據(jù)中間不能有逗號(,);若貨幣值為負(fù)數(shù),需要在符號$的
后面加上負(fù)號(-)。例如:$15000.32,$680,$-20000.9088都是正確的貨幣
數(shù)據(jù)表示形式。
(5) 位型
SQL Server中的位(bit)型數(shù)據(jù)相當(dāng)于其他語言中的邏輯型數(shù)據(jù),它只存儲0
和1,長度為一個字節(jié)。但要注意,SQL Server對表中bit類型列的存儲作了優(yōu)
化:如果一個表中有不多于 8 個的bit列,這些列將作為一個字節(jié)存儲,如果
表中有 9 到 16 個 bit 列,這些列將作為兩個字節(jié)存儲,更多列的情況依此類
推。
當(dāng)為bit類型數(shù)據(jù)賦0時,其值為0,而賦非0(如100)時,其值為1。
若表中某列為bit類型數(shù)據(jù),那么該列不允許為空值(有關(guān)空值概念本節(jié)稍后即
做介紹),并且不允許對其建立索引。
(6) 字符型
字符型數(shù)據(jù)用于存儲字符串,字符串中可包括字母、數(shù)字和其它特殊符號(如#、
@、&等等)。在輸入字符串時,需將串中的符號用單引號或雙引號括起來,
如’abc’、”Abc SQL Server字符型包括兩類:固定長度 (char) 或可變長度 (varchar) 字符數(shù)據(jù) 類型。 l char[(n)] 定長字符數(shù)據(jù)類型,其中n定義字符型數(shù)據(jù)的長度,n在1到8000之間,缺省 為1。當(dāng)表中的列定義為char(n)類型時,若實(shí)際要存儲的串長度不足n時,則 在串的尾部添加空格以達(dá)到長度n,所以char(n)的長度為n。例如某列的數(shù)據(jù)類 型為char(20),而輸入的字符串為”ahjm1922”,則存儲的是字符ahjm1922和 12個空格。若輸入的字符個數(shù)超出了n,則超出的部分被截斷。 l varchar[(n)] 變長字符數(shù)據(jù)類型,其中n的規(guī)定與定長字符型char中n完全相同,但這里n 表示的是字符串可達(dá)到的最大長度。varchar(n)的長度為輸入的字符串的實(shí)際字 符個數(shù),而不一定是n。例如,表中某列的數(shù)據(jù)類型為varchar(100),而輸入的 字符串為”ahjm1922”,則存儲的就是字符ahjm1922,其長度為8字節(jié)。 當(dāng)列中的字符數(shù)據(jù)值長度接近一致時,例如姓名,此時可使用 char;而當(dāng)列中 的數(shù)據(jù)值長度顯著不同時,使用varchar較為恰當(dāng),可以節(jié)省存儲空間。 (7) Unicode字符型 Unicode是“統(tǒng)一字符編碼標(biāo)準(zhǔn)”,用于支持國際上非英語語種的字符數(shù)據(jù)的存儲 和處理。SQL Server的Unicode字符型可以存儲Unicode標(biāo)準(zhǔn)字符集定義的各 種字符。 Unicode字符型包括nchar[(n)]和nvarchar[(n)]兩類。nchar是固定長度 Unicode 數(shù)據(jù)的數(shù)據(jù)類型,nvarchar 是可變長度 Unicode 數(shù)據(jù)的數(shù)據(jù)類型,二者均使用 UNICODE UCS-2 字符集。 l nchar[(n)]:nchar[(n)]為包含n個字符的固定長度 Unicode 字符型數(shù)據(jù),n 的 值在 1 與 4,000 之間,缺省為1。長度為2n字節(jié)。若輸入的字符串長度不足 n,將以空白字符補(bǔ)足。 l nvarchar[(n)]:nvarchar[(n)]為最多包含n個字符的可變長度 Unicode 字符型 數(shù)據(jù),n 的值在 1 與 4,000之間,缺省為1。長度是所輸入字符個數(shù)的兩倍。 實(shí)際上,nchar、nvarchar與char、varchar的使用非常相似,只是字符集不同 (前者使用Unicode字符集,后者使用ASCII字符集)。 (8) 文本型 當(dāng)需要存儲大量的字符數(shù)據(jù),如較長的備注、日志信息等等,字符型數(shù)據(jù)的最長 8000個字符的限制可能使它們不能滿足這種應(yīng)用需求,此時可使用文本型數(shù)據(jù)。 文本型包括text和ntext兩類,分別對應(yīng)ASCII字符和Unicode字符。text類型 可以表示最大長度為 231-1 (2,147,483,647) 個字符,其數(shù)據(jù)的存儲長度為實(shí)際 字符數(shù)個字節(jié)。ntext可表示最大長度為 230 - 1 (1,073,741,823) 個Unicode 字符,其數(shù)據(jù)的存儲長度是實(shí)際字符個數(shù)的兩倍(以字節(jié)為單位)。 (9) 二進(jìn)制型 二進(jìn)制數(shù)據(jù)類型表示的是位數(shù)據(jù)流,包括binary(固定長度)和varbinary(可 變長度)兩種。 l binary [(n) ]:固定長度的n個字節(jié)二進(jìn)制數(shù)據(jù)。n取值范圍為 1 到 8,000,缺 省為1。binary(n)數(shù)據(jù)的存儲長度為 n+4 字節(jié)。若輸入的數(shù)據(jù)長度小于n,則 不足部分用0填充;若輸入的數(shù)據(jù)長度大于n,則多余部分被截斷。 輸入二進(jìn)制值時,在數(shù)據(jù)前面要加上0x,可以用的數(shù)字符號為0—9、A—F(字 母大小寫均可)。因此,二進(jìn)制數(shù)據(jù)有時也被稱為十六進(jìn)制數(shù)據(jù)。例如0xFF、 0x12A0分別表示值FF和12A0。因為每字節(jié)的數(shù)最大為FF,故在“0x”格式的 數(shù)據(jù)每兩位占1個字節(jié)。 l varbinary [(n) ]:n個字節(jié)變長二進(jìn)制數(shù)據(jù)。n取值范圍為 1 到 8,000,缺省 為1。varbinary(n)數(shù)據(jù)的存儲長度為實(shí)際輸入數(shù)據(jù)長度+4個字節(jié)。 (10) 日期時間類型 日期時間類型數(shù)據(jù)用于存儲日期和時間信息,包括datetime和smalldatetime兩 類。 l datetime:datetime類型可表示的日期范圍從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數(shù)據(jù),精確度為百分之三秒(3.33 毫秒或 0.00333 秒),例如1到3毫秒的值都表示為0毫秒,4到6毫秒的值都表示為4毫秒。 datetime類型數(shù)據(jù)長度為8字節(jié),日期和時間分別使用4個字節(jié)存儲。前4 字 節(jié)用于存儲datetime類型數(shù)據(jù)中距1900 年 1 月 1 日的天數(shù),為正數(shù)表示日 期在1900年1月1日之后,為負(fù)數(shù)則表示日期在1900年1月1日之前。后4 個字節(jié)用于存儲datetime類型數(shù)據(jù)中距12:00(24小時制)的毫秒數(shù)。 用戶以字符串形式輸入datetime類型數(shù)據(jù),系統(tǒng)也以字符串形式輸出datetime 類型數(shù)據(jù),將用戶輸入到系統(tǒng)以及系統(tǒng)輸出的datetime類型數(shù)據(jù)的字符串形式 稱為datetime類型數(shù)據(jù)的“外部形式”,而將datetime在系統(tǒng)內(nèi)的存儲形式稱為 “內(nèi)部形式”,SQL Server負(fù)責(zé)datetime類型數(shù)據(jù)的兩種表現(xiàn)形式之間的轉(zhuǎn)換, 包括合法性檢查。 用戶給出datetime類型數(shù)據(jù)值時,日期部分和時間部分分別給出。 日期部分的表示形式常用的格式如下: 年 月 日 2001 Jan 20、2001 Janary 20 年 日 月 2001 20 Jan 月 日[,]年 Jan 20 2001、Jan 20,2001、Jan 20,01 月 年 日 Jan 2001 20 日 月[,]年 20 Jan 2001、20 Jan,2001 日 年 月 20 2001 Jan 年(4位數(shù)) 2001表示2001年1月1日 年月日 20010120、010120 月/日/年 01/20/01、1/20/01、01/20/2001、1/20/2001 月-日-年 01-20-01、1-20-01、01-20-2001、1-20-2001 月.日.年 01.20.01、1.20.01、01.20.2001、1.20.2001 說明:年可用4位或2位表示,月和日可用1位或2位表示。 時間部分常用的表示格式如下: 時:分 10:20、08:05 時:分:秒 20:15:18、20:15:18.2 時:分:秒:毫秒 20:15:18:200 時:分AM|PM 10:10AM、10:10PM l smalldatetime:smalldatetime類型數(shù)據(jù)可表示從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間,數(shù)據(jù)精確到分鐘,即29.998 秒或更低的值向下舍 入為最接近的分鐘,29.999 秒或更高的值向上舍入為最接近的分鐘。 Smalldatetime類型數(shù)據(jù)的存儲長度為4字節(jié),前2個字節(jié)用來存儲 smalldatetime類型數(shù)據(jù)中日期部分距1900年1月1日之后的天數(shù);后2個字 節(jié)用來存儲smalldatetime類型數(shù)據(jù)中時間部分距中午12點(diǎn)的分鐘數(shù)。 用戶輸入smalldatetime類型數(shù)據(jù)的格式與datetime類型數(shù)據(jù)完全相同,只是它 們的內(nèi)部存儲可能不相同。 (11) 時間戳型 標(biāo)識符是timestamp。若創(chuàng)建表時定義一個列的數(shù)據(jù)類型為時間戳類型,那么每 當(dāng)對該表加入新行或修改已有行時,都由系統(tǒng)自動將一個計數(shù)器值加到該列,即 將原來的時間戳值加上一個增量。記錄timestamp列的值實(shí)際上反映了系統(tǒng)對 該記錄修改的相對(相對于其他記錄)順序。一個表只能有一個timestamp 列。 Timestamp類型數(shù)據(jù)的值實(shí)際上是二進(jìn)制格式數(shù)據(jù),其長度為8字節(jié)。 (12) 圖象數(shù)據(jù)類型 標(biāo)識符是image,它用于存儲圖片、照片等。實(shí)際存儲的是可變長度二進(jìn)制數(shù)據(jù), 介于 0 與 231-1 (2,147,483,647) 字節(jié)之間。 (13) 其它數(shù)據(jù)類型 除了上面所介紹的常用數(shù)據(jù)類型外,SQL Server 2000還提供了其它幾種數(shù)據(jù)類 型:cursor、sql_variant、table和uniqueidentifier。 Cursor:是游標(biāo)數(shù)據(jù)類型,用于創(chuàng)建游標(biāo)變量或定義存儲過程的輸出參數(shù)。 Sql_variant:是一種存儲 SQL Server 支持的各種數(shù)據(jù)類型(除text、ntext、 image、timestamp 和 sql_variant 外)值的數(shù)據(jù)類型。Sql_variant的最大長度 可達(dá) 8016 字節(jié)。 Table:是用于存儲結(jié)果集的數(shù)據(jù)類型,結(jié)果集可以供后續(xù)處理。 Uniqueidentifier:是唯一標(biāo)識符類型。系統(tǒng)將為這種類型的數(shù)據(jù)產(chǎn)生唯一標(biāo)識值, 它是一個16字節(jié)長的二進(jìn)制數(shù)據(jù)。

本文發(fā)布于:2023-11-24 12:03:11,感謝您對本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/170079859134445.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。
本文word下載地址:數(shù)據(jù)庫常用數(shù)據(jù)類型.doc
本文 PDF 下載地址:數(shù)據(jù)庫常用數(shù)據(jù)類型.pdf
| 留言與評論(共有 0 條評論) |