zoukankan      html  css  js  c++  java
  • 基础篇之 Create Type

    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( )

    bit

    char( )

    date

    datetime

    datetime2

    datetimeoffset

    decimal

    float

    image

    int

    money

    nchar( )

    ntext

    numeric

    nvarchar( |max)

    real

    smalldatetime

    smallint

    smallmoney

    sql_variant

    text

    time

    tinyint

    uniqueidentifier

    varbinary( |max)

    varchar( |max)

    还有一点,定义了自定义数据类型,是在本架构适用!所以创建临时表是不能使用自定义类型的!因为临时表在Tempdb里面。并不在自定义变量的作用域!

    所以,虽然架构上面的问题我们开发的时候会忽略,但是还是得留个心眼哦~

  • 相关阅读:
    2019.6.20刷题统计
    36 线程 队列 守护线程 互斥锁 死锁 可重入锁 信号量
    35 守护进程 互斥锁 IPC 共享内存 的方式 生产者消费者模型
    34 进程 pid ppid 并发与并行,阻塞与非阻塞 join函数 process对象 孤儿进程与僵尸进程
    33 udp 域名 进程
    32 粘包 文件传输
    31 socket客户端. 服务器 异常 语法
    30 网络编程
    29 元类 异常
    26 封装 反射 常用内置函数
  • 原文地址:https://www.cnblogs.com/Gin-23333/p/5280534.html
Copyright © 2011-2022 走看看