數據庫原理和應用(8)—— 數據類型
- SQL使用數據定義語言(Data Definition Language,DDL)實現數據定義功能。
- 關係表中每一列(即每個字段)都來自同一個域,屬於同一種數據類型。
- 常見數據表之前,需要爲表中的每一個屬性設置一種數據類型。
1. 整數型
按照取值範圍從大到小,包括bigint、int、smallint、tiniint、bit。在實際應用中,可以根據屬性的具體取值範圍選擇合適的整數型。
2. 數值型
- 包括精確數值型numeric、decimal和近似數值型float、real。
- numeric和decimal在功能上等效,用於精確存儲數值。
- 以numerical爲例,格式爲numeric(p,s),其中p表示數據長度,s表示小數位數。
- float和real用來存儲數據的近似值,當數值的位數太多時,可用它們存取數值的近似值。
3. 字符型
- 包括char、varchar、nchar、nvarchar、text、ntext。
- 其中char、varchar存放非Unicode字符(即ASCII字符),一個字符佔1個字節,char是定長的,varchar是非定長的。
- nchar、nvarchar存放Unicode字符,一個字符佔2個字節,nchar是定長的,nvarchar是非定長的。
- 當某個字符型屬性需要描述的字符數比較多時,可以將其設置爲text,ntext。其中,text存放非Unicode字符,定長,最大可存儲2GB;ntext存放Unicode字符,非定長,最大可存儲2GB。
4. 二進制數據型
- 包括binary、varbinary、image。
- binary是定長的二進制數據型,varbinary是非定長的二進制數據型,二者最多可以表示8000個字節。任何類型的數據都可存儲在這種類型的字段中,不需數據轉換。
5. 特殊類型
-
包括timestamp、uniqueidentifier、sql_variant、table
-
timestamp數據類型提供數據庫範圍內的唯一值,此類型相當於binary(8)或varbinary(8),但當它所定義的列更新或添加數據行時,此列的值會被自動更新,一個計數值將自動的添加到此timestamp數據列中。每個數據庫表中只能有一個timestamp數據列。
-
uniqueidentifier數據類型稱爲全球唯一標識符(Globally Unique Identifier,GUID),可用NEWID()函數產生。
-
sql_variant數據類型可以存儲除文本、圖形數據和timestamp類型數據外的其他任何合法的SQL Server數據,此數據類型大大方便了SQL Server的開發工作。
-
table數據類型用於存儲對錶或視圖處理後的結果集,這一類型使得變量可以存儲一個表,從而使函數或過程返回查詢結果更加方便、快捷。