| 4.2.6 文本和圖形資料類型 文本和圖形資料類型是用於儲存大量的非Unicode和Unicode字元以及位元據的固定長度和可變長度資料類型,包括text型、ntext型和image型。 l text型是用於儲存大量非Unicode文本資料的可變長度資料類型,其容量理論上為231-1(2 147 483 647)個位元組。在實際應用時需要視硬碟的儲存空間而定。 在SQL Server 2000以前的版本中,資料庫中一個textObject Storage Service的實際上是一個指標,它指向一個以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變數和使用者定義函數的傳回值。這一類型使得變數可以儲存一個表,從而使函數或過程返回查詢結果更加方便快捷。 |