數據庫探索之旅——數據類型

目錄

1. 何爲數據類型
2. 數據類型列表
3. 用戶自定義數據類型
4. 數據類型優先級

在學習基本表之前,需要先了解一下數據類型,一便更好的學習基本表。此處的數據類型基於 SQL Server 2012。

1. 何爲數據類型

數據類型是一種屬性,是用來限定表中的列的數據所允許存儲的數據的類型,一列中的所有數值都應該是同一種數據類型,除非該列指定爲 sql_variant 數據類型的值。

數據類型一般分爲數字類型、日期和時間類型、字符串類型、Unicode 字符串類型、二進制字符串類型、空間類型、其他數據類型七大類。

2. 數據類型列表

數字類型

日期和時間類型

字符串類型

Unicode 字符串類型

二進制字符串

空間類型

其他類型

幾點說明:
1. Unicode 是計算機上的一種編碼方式。有興趣的書友可以到Unicode@字符百科查看各種字符對應的編碼。
2. 有一些數據類型都會有默認值,需要自定義長度的數據類型,在用戶不定義的時候,他會自動給一個默認值。

3. 用戶自定義數據類型

用戶自定義數據類型是指用戶基於系統的數據類型而設計並實現的數據類型。創建用戶自定義類型時必須提供數據類型的名稱所基於的系統數據類型是否允許爲空三個參數。

通過圖形界面創建

對象資源管理器下某個數據庫中找的可編程性節點,展開後右擊類型,如下圖:
用戶自定義數據類型
然後在界面上設置前面所說的三個參數,名稱設爲 mycs,所基於的系統數據類型爲 text,是否允許爲空選擇 √ 允許。如下圖:
設置類型參數
確定後可在可編程性下找到該數據類型。
查看結果

通過T-SQL語句創建

需要調用 sp_addtype 存儲過程,基本語法如下:
sp_addtype [ @typename = ] type, [ @phystype = ] system_data_type [ , [@nulltype = ] ‘null_type’ ]

語法說明:
1. [ @typename = ] type:自定義數據類型的名稱,該名稱在每個數據庫中是唯一的。該類型無默認值。
2. [ @phystype = ] system_data_type:自定義數據類型所基於物理數據類型或 SQL Server 提供的數據類型。該類型無默認值。
3. [@nulltype = ] ‘null_type’:指定自定義數據類型處理空值的方式。null_type 的數據了行爲 varchar(8),默認值爲 NULL,並且必須用單引號引起來(’NULL’、’NOT NULL’或’NONULL’)。

【實例】在 practice 數據庫中自定義基於 float 的不允許爲空值的mysc1 數據類型。
在查詢窗口鍵入命令:

USE practice;
GO
EXEC sp_addtype mysc1 ,'float','NOT NULL';

調試後可得結果如下圖:
成功創建 mysc1 數據類型
若要刪除用戶自定義的數據類型,可通過如下方式:
sp_droptype [ @typename = ] ‘type’
【實例】刪除 practice 數據庫中的 mysc1 數據類型。在查詢窗口鍵入如下命令:

USE practice;
GO
EXEC sp_droptype mysc

4. 數據類型的優先級

當兩個不同數據類型的表達式用運算符結合後,數據類型優先級規則將優先級較低的數據類型轉換爲優先級較高的數據類型。如果此轉換不是所支持的飲食轉換,則會返回錯誤。當兩個操作數表達式具有相同的數據類型時,運算的結果便爲該數據類型。

優先級該地順序如下:
(最高)用戶自定義數據類型 > sql_variant > xml > datetimeoffset > datetime2 > datetime > smalldatetime > date > time > floart > real > decimal > money > smallmoney > bigint > int > smallint > tinyint > bit > ntext > text > image > timestamp > uniqueidentifier > nvarchar > nchar > varchar > char > varbinary > binary (最低)


以往的文章:

數據庫探索之旅——初識數據庫
數據庫探索之旅——數據庫管理系統
數據庫探索之旅——連接數據庫
數據庫探索之旅——對數據庫的簡單操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章