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