Create Type 的話呢,是創建一個自定義的數據類型,等於說為常用的數據類型建造一個別名的樣紙。然後就可以通用當前資料庫的當前架構。(當然了,一般來說我們都是使用dbo架構,所以都會無事前面那個說明)╮(╯_╰)╭。 下麵我來演示一下相關內容 最簡單的先創建一個類型TS,然後把它查出來。雖然看
Create Type 的話呢,是創建一個自定義的數據類型,等於說為常用的數據類型建造一個別名的樣紙。然後就可以通用當前資料庫的當前架構。(當然了,一般來說我們都是使用dbo架構,所以都會無事前面那個說明)╮(╯_╰)╭。
下麵我來演示一下相關內容
最簡單的先創建一個類型TS,然後把它查出來。雖然看起來類型是 TS,但是實際上查看變數的數據類型,還是varchar ,還是對準了基礎類型。所以雖然比如我們定義了一個char(11) 的Phone 類型,又或者是一個 char(1) 的Sex,實際上看到的描述,也還是它的定義的類型。
CREATE TYPE TS FROM varchar(50) DECLARE @AA TS = '2000' SELECT SQL_VARIANT_PROPERTY(@AA,'BaseType') -- varchar
然後我們看下在Sys.Columns 裡面對 TS的描述,對於system_type_id,也是對應167 就是varchar 的類型,然後再max_length還是我們定義的那個。而且指定了 is_user_defined = 1 就是表示了是用戶自定義的數據類型了
SELECT system_type_id , user_type_id , schema_id , principal_id , max_length , precision , collation_name , scale , is_nullable , is_user_defined , is_assembly_type , default_object_id , is_table_type FROM sys.types WHERE name = 'TS' system_type_id user_type_id schema_id principal_id max_length precision collation_name scale is_nullable is_user_defined is_assembly_type default_object_id is_table_type -------------- ------------ ----------- ------------ ---------- --------- -------------------------------------------------------------------------------------------------------------------------------- ----- ----------- --------------- ---------------- ----------------- ------------- 167 257 1 NULL 50 0 Chinese_PRC_CI_AS
然後是自定義的類型支持辣麽多的基礎類型哦~
bigint |
binary( n ) |
bit |
char( n ) |
date |
datetime |
datetime2 |
datetimeoffset |
decimal |
float |
image |
int |
money |
nchar( n ) |
ntext |
numeric |
nvarchar( n |max) |
real |
smalldatetime |
smallint |
smallmoney |
sql_variant |
text |
time |
tinyint |
uniqueidentifier |
varbinary( n |max) |
varchar( n |max) |
還有一點,定義了自定義數據類型,是在本架構適用!所以創建臨時表是不能使用自定義類型的!因為臨時表在Tempdb裡面。並不在自定義變數的作用域!
所以,雖然架構上面的問題我們開發的時候會忽略,但是還是得留個心眼哦~