官术网_书友最值得收藏!

4.2.2 數據類型

數據類型是指數據所代表信息的類型,如數值型、字符型、日期型、貨幣型、圖像型等。用戶使用的數據類型與SQL Server 2005系統在內存或磁盤上開辟的存儲空間大小密切相關。因此,在使用數據之前,先要定義其數據類型。SQL Server 2005中支持系統數據類型和用戶自定義數據類型。

1.系統數據類型及其說明

SQL Server 2005提供了豐富的系統數據類型,表4.5列出了SQL Server 2005支持的系統數據類型。

表4.5 SQL Server 2005支持的系統數據類型

(1)字符型。

字符型數據類型用于存儲由字母、數字和符號組成的字符串。SQL Server提供了char、varchar和text三種類型。其中,char用于存儲長度固定的字符串,varchar用于存儲長度可變的字符串,text用于存儲無限長的字符串(每行可達2GB)。

對于定長字符數據類型,用char(n)來表示,n表示指定定長字符串的長度。若實際存儲的字符串長度不足n時,則字符串的尾部用空格填充;若輸入長度大于n時,則超出的部分被截去。

對于變長字符數據類型,用varcher(n)來表示,n表示的是字符串可達到的最大長度。存儲大小是輸入數據的實際長度。

當實際的字符數據長度接近一致時,可以使用char;而當字符數據的長度差別顯著不同時,使用varchar更合適,能節省存儲空間。

(2)Unicode字符型。

Unicode(統一字符編碼標準)用于支持國際上非英語語種的字符數據的存儲和處理。SQL Server的Unicode字符型可以存儲Unicode標準字符集定義的各種字符。

Unicode字符型數據類型有nchar[(n)]、nvarchar[(n)]和ntext三類。nchar[(n)]是包含n個字符的固定長度的Unicode字符數據。若輸入字符串長度不足n,則將以空白字符補足。nvarchar[(n)]為最多包含n個字符的可變長度的Unicode字符數據。ntext類型可以存儲的數據范圍是0~(231-1)字節。

實際上,nchar、nvarchar、ntext與char、varchar、text的使用非常相似,只是字符集不同。前者使用Unicode字符集,后者使用ASCII字符集。

(3)二進制字符型。

二進制字符型是指數據由二進制值組成。SQL Server提供了三種二進制數據類型,即binary、varbinary和image。其中,binary用于存儲固定長度的二進制數據,varbinary用于存儲可變長度的二進制數據,image用于存儲大的二進制數據,如存儲照片、圖片或圖畫。

輸入二進制數據時,在數據前面要加上“0x”,可用的數字符號為0~9,A~F(不區分大小寫)。

(4)整型。

整型數據類型包括bigint、int、smallint、tinyint四類。從標識符的含義可以看出,它們的數值范圍逐漸縮小,最常用的是int。

(5)精確數值型。

精確數值型數據由整數部分和小數部分構成,其所有的數字都是有效位,能夠以完整的精度存儲十進制數。精確數值型數據類型包括decimal和numeric兩類,從功能上說兩者完全等價。最常用的是numeric類型。

(6)近似數值型。

近似數值型數據類型有浮點型(float)和實型(real)兩類。real的存儲長度為4字節,可以用real數據類型存儲正的或負的十進制數值。float如果不指定其長度,它會占用8字節的存儲空間。用戶可以指定float型數值的長度。當指定長度為1~7時,則定義了一個real數據類型。

(7)日期和時間型。

日期和時間型是指用datetime和smalldatetime類型來存儲日期和時間數據。兩者占用的空間和取值范圍不同,而數據格式是完全相同的。默認情況下,輸入格式為“月/日/年”。

(8)貨幣型。

貨幣型數據類型包括money和smallmoney兩類,它們用十進制數表示貨幣,當輸入貨幣型數據時,必須在數據前面加上貨幣表示符號($),且數據中間不能有逗號(,);若貨幣為負數,則需要在符號前加上負號(-)。

(9)其他數據類型。

①bit(位)數據類型。bit(位)數據類型有0和1兩種取值,長度為1字節。輸入0以外的其他值時,系統都把它們當作1對待。這種數據類型常作為邏輯變量使用,用來表示真、假(或是、否等)二值選擇。

②cursor數據類型。cursor數據類型是變量或存儲過程output參數的一種數據類型,這些參數包含對游標的引用。使用cursor數據類型創建的變量可以為空。

③timestamp數據類型。timestamp數據類型提供數據庫范圍內的唯一值,反映數據庫中數據修改的相對順序,相當于一個自動增加的計數器。當它所定義的列在更新或插入數據行時,該列的值自動增加。

④XML數據類型。利用它可以將XML實例存儲在表列中或者XML類型的變量中。

⑤table數據類型。table數據類型用于存儲對表或視圖處理后的結果集。這種數據類型使得變量可以存儲一個表,從而使函數或過程返回查詢結果更加方便、快捷。

⑥sql_variant數據類型。sql_variant數據類型用于存儲除文本、圖形數據和timestamp類型數據外的任何合法的SQL Server數據,從而方便了SQL Server的開發工作。

⑦uniqueidentifier數據類型。uniqueidentifier數據類型用于存儲一個16字節長的二進制數據,它是SQL Server根據計算機網卡地址和CPU時鐘產生的全局唯一標識符,該數字由SQL Server的newid()函數獲得。在全球各地的計算機經由此函數產生的數字都不會相同。

2.用戶自定義數據類型

用戶自定義數據類型是建立在SQL Server系統數據類型的基礎上的,可以看作是系統數據類型的別名。當用戶自定義一種數據類型時,需要指定該類型的名稱、建立在其上的系統數據模型以及是否允許為空值等。用戶自定義數據類型后,自定義數據類型的使用和系統數據類型一樣。

有兩種方法可建立用戶自定義數據類型。一種是通過對象資源管理器,另一種則是利用系統存儲過程建立。下面僅介紹通過對象資源管理器建立用戶自定義數據類型的過程,以創建一個名為zgh、基于char數據類型、不允許為空值的用戶自定義數據類型為例。

在“對象資源管理器”中展開要建立用戶自定義數據類型的數據庫,右擊“類型”,然后單擊“新建”—“用戶定義數據類型”(如圖4.10所示)。

圖4.10 創建用戶自定義數據類型

在彈出的對話框中,輸入新建數據類型的名稱(zgh),并在“數據類型”下拉列表中選擇所基于的系統數據類型(char),在“長度”對應的輸入框中更改該數據類型可存儲的最大數據長度,其他可根據需要一一進行修改(如圖4.11所示)。

圖4.11 用戶自定義數據類型屬性對話框

用戶自定義數據類型創建后可以像系統數據類型一樣使用。

如果要刪除用戶自定義數據類型,可右擊該數據類型,然后單擊“刪除”,在“刪除對象”對話框內選中對象名稱,單擊“確定”按鈕,完成刪除用戶自定義數據類型。

主站蜘蛛池模板: 大足县| 都安| 鹿邑县| 出国| 鄂托克前旗| 遂溪县| 绥德县| 泾川县| 城步| 甘肃省| 石阡县| 三门峡市| 邛崃市| 永康市| 灵璧县| 洮南市| 顺义区| 嘉鱼县| 建瓯市| 新乐市| 松桃| 老河口市| 桐城市| 铜川市| 文昌市| 旅游| 安新县| 湖南省| 江津市| 新乐市| 邹城市| 临汾市| 合江县| 丹凤县| 娄烦县| 娄底市| 隆德县| 潞城市| 东山县| 瑞安市| 山东省|