Transact-SQL数据类型(文本/图形/日期和时间/货币/特定类型)
4.2.6 文本和圖形數(shù)據(jù)類型文本和圖形數(shù)據(jù)類型是用于存儲(chǔ)大量的非Unicode和Unicode字符以及二進(jìn)制數(shù)據(jù)的固定長度和可變長度數(shù)據(jù)類型,包括text型、ntext型和image型。 l????????? text型是用于存儲(chǔ)大量非Unicode文本數(shù)據(jù)的可變長度數(shù)據(jù)類型,其容量理論上為231-1(2 147 483 647)個(gè)字節(jié)。在實(shí)際應(yīng)用時(shí)需要視硬盤的存儲(chǔ)空間而定。 在SQL Server 2000以前的版本中,數(shù)據(jù)庫中一個(gè)text對(duì)象存儲(chǔ)的實(shí)際上是一個(gè)指針,它指向一個(gè)以8KB為單位的數(shù)據(jù)頁。這些數(shù)據(jù)頁是動(dòng)態(tài)增加并被邏輯連接起來的。在SQL Server 2000中,則將text和image型的數(shù)據(jù)直接存放到表的數(shù)據(jù)行中,而不是存放到不同的數(shù)據(jù)頁中。這樣就減少了用于存儲(chǔ)text和image類型的空間,并相應(yīng)減少了磁盤處理這類數(shù)據(jù)的I/O數(shù)量。 l????????? ntext型是用于存儲(chǔ)大量Unicode文本數(shù)據(jù)的可變長度數(shù)據(jù)類型,其理論容量為230-1(1 073 741 823)個(gè)字節(jié)。ntext型的其他用法與text型基本一樣。 l????????? image型是用于存儲(chǔ)大量二進(jìn)制數(shù)據(jù)的可變長度數(shù)據(jù)類型,其理論容量為231-1 (2 147 483 647)個(gè)字節(jié)。Image型數(shù)據(jù)的存儲(chǔ)模式與text型數(shù)據(jù)相同,通常用來存儲(chǔ)圖形等OLE對(duì)象。在輸入數(shù)據(jù)時(shí),與輸入二進(jìn)制數(shù)據(jù)一樣,必須在數(shù)據(jù)前加上起始符號(hào)“0X”作為二進(jìn)制標(biāo)識(shí)。 4.2.7 日期和時(shí)間數(shù)據(jù)類型日期和時(shí)間數(shù)據(jù)類型代表日期和一天內(nèi)的時(shí)間,包括datetime型和smalldatetime型。 l????????? datetime型是用于存儲(chǔ)日期和時(shí)間的結(jié)合體的數(shù)據(jù)類型。它可以存儲(chǔ)從公元1753年1月1日零時(shí)起到公元9999年12月31日23時(shí)59分59秒之間的所有日期和時(shí)間,其精確度可達(dá)3%秒。 datetime型數(shù)據(jù)所占用的存儲(chǔ)空間為8個(gè)字節(jié),其中前4個(gè)字節(jié)用于存儲(chǔ)1900年1月1日以前或以后的天數(shù),數(shù)值分正負(fù),正數(shù)表示在此日期之后的日期,負(fù)數(shù)表示在此日期之前的日期;后4個(gè)字節(jié)用于存儲(chǔ)從此日零時(shí)起所指定的時(shí)間經(jīng)過的毫秒數(shù)。如果在輸入時(shí)省略了時(shí)間部分,則系統(tǒng)將默認(rèn)為12:00:00:000AM;如果省略了日期部分,系統(tǒng)將默認(rèn)為1900年1月1日。 l????????? smalldatetime型與datetime型相似,但其存儲(chǔ)的日期時(shí)間范圍較小,從1900年1月1日到2079年6月6日。它的精度也較低,只能精確到分鐘級(jí),其分鐘個(gè)位上的值是根據(jù)秒數(shù)并以30秒為界四舍五入得到的。 Smalldatetime型數(shù)據(jù)所占用的存儲(chǔ)空間為4個(gè)字節(jié),其中前兩個(gè)字節(jié)存儲(chǔ)從基礎(chǔ)日期1900年1月1日以來的天數(shù),后兩個(gè)字節(jié)存儲(chǔ)此日零時(shí)起所指定的時(shí)間經(jīng)過的分鐘數(shù)。 4.2.8 貨幣數(shù)據(jù)類型貨幣數(shù)據(jù)類型用于存儲(chǔ)貨幣或現(xiàn)金值,包括money型和smallmoney型。在使用貨幣數(shù)據(jù)類型時(shí),應(yīng)在數(shù)據(jù)前加上貨幣符號(hào),以便系統(tǒng)辨識(shí)其為哪國的貨幣,如果不加貨幣符號(hào),則系統(tǒng)默認(rèn)為“¥”。 l????????? money型是一個(gè)有4位小數(shù)的decimal值,其取值從-263(-9 223 372 036 854 775 808) ~263-1(+9 223 372 036 854 775 807),精確到貨幣單位的千分之十。存儲(chǔ)大小為8個(gè)字節(jié)。 l????????? smallmoney型貨幣數(shù)據(jù)值介于-2 147 483 648~+2 147 483 647之間,精確到貨幣單位的千分之十。存儲(chǔ)大小為 4 個(gè)字節(jié)。 4.2.9 特定數(shù)據(jù)類型SQL Server 2000中包含了一些用于數(shù)據(jù)存儲(chǔ)的特殊數(shù)據(jù)類型,包括timestamp型和 uniqueidentifier型。 l????????? timestamp數(shù)據(jù)類型提供數(shù)據(jù)庫范圍內(nèi)的惟一值,它相當(dāng)于binary(8)或varbinary(8),但當(dāng)它所定義的列在進(jìn)行更新或插入數(shù)據(jù)行操作時(shí),此列的值會(huì)自動(dòng)更新。每個(gè)數(shù)據(jù)庫表中只能有一個(gè)timestamp型數(shù)據(jù)列。如果表中的列名為“timestamp”,則該列的類型將被自動(dòng)定義為timestamp型。 l????????? uniqueidentifier數(shù)據(jù)類型用于存儲(chǔ)一個(gè)16位的二進(jìn)制數(shù)據(jù),此數(shù)據(jù)稱為全局惟一標(biāo)識(shí)符(Globally Unique Identifier,GUID)。此數(shù)據(jù)由SQL Server 2000的NEWID()函數(shù)產(chǎn)生,在全球各地的計(jì)算機(jī)經(jīng)由此函數(shù)產(chǎn)生的數(shù)字不會(huì)相同。 4.2.10 用戶自定義數(shù)據(jù)類型sysname數(shù)據(jù)類型是系統(tǒng)提供給用戶的,便于用戶自定義的數(shù)據(jù)類型。該數(shù)據(jù)類型被定義為NVARCHAR(128),即它可以存儲(chǔ)128個(gè)Unicode字符或256個(gè)一般字符。 4.2.11 新增數(shù)據(jù)類型前面講到過SQL Server 2000新增了3種數(shù)據(jù)類型:bigint型、sql_variant型和table型。其中bigint型已經(jīng)在整數(shù)類型中介紹過了。 l????????? sql_variant型是一種存儲(chǔ)SQL Server支持的各種數(shù)據(jù)類型(text、ntext、timestamp 和sql_variant除外)值的數(shù)據(jù)類型。此數(shù)據(jù)類型大大方便了SQL Server的開發(fā)工作。 l????????? table型用于存儲(chǔ)對(duì)表或視圖處理后的結(jié)果集。table數(shù)據(jù)類型不適用于表中的列,而只能用于Transact-SQL變量和用戶定義函數(shù)的返回值。這一類型使得變量可以存儲(chǔ)一個(gè)表,從而使函數(shù)或過程返回查詢結(jié)果更加方便快捷。 |
總結(jié)
以上是生活随笔為你收集整理的Transact-SQL数据类型(文本/图形/日期和时间/货币/特定类型)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++Primer:Break、Cont
- 下一篇: 大话数据结构与算法:算法初步1