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里面。并不在自定义变量的作用域!

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

  • 相关阅读:
    阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_10-webpack研究-安装nodejs
    ES6深入浅出-1 新版变量声明:let 和 const-2.视频 let和const
    ES6深入浅出_汇总贴
    ES6深入浅出-1 新版变量声明:let 和 const-1.视频 概述
    数据类型及其空间大小,vs2012实测
    linux cmd
    常见英文地址表达方法
    网络基础
    VMware三种链接方式
    Source Insight使用技巧
  • 原文地址:https://www.cnblogs.com/Gin-23333/p/5280534.html
Copyright © 2011-2022 走看看