数据分析之SQL系统表

作者: 数据蛙datafrog | 来源:发表于2018-12-26 23:47 被阅读14次

    这里主要是整理些常用系统表的知识点,有时候面试数据分析的时候会问到的。先给大家出一道面试题目:
    已知道一个用户表的名字是 brands,如何查找出表中的所有列名字呢?

    看完下面的内容,你肯定会明白的

    一:Sysobjects表

    Sysobjects 主要存放着数据库中的所有对象,如表,列,索引等等。字段xtype代表对象类型,比如u代表用户表,p代表存储过程,tr代表触发器等。name字段表示对象名称。

    如: select * from sysobjects where xtype='u'
    
    二:Syscolumns表

    当前数据库的所有字段都保留在里面。

    select col.name,obj.name 
    from syscolumns col join sysobjects obj
     on col.id=obj.id where obj.xtype='u' 
    

    这时候,我们再来回顾下刚刚的问题,因为表示用户表,所以xtype='u' ,对象名字就是'brands',所以结合Sysobjects表、
    Syscolumns表
    ,容易查找出来。

    select obj.name,col.name
     from syscolumns  col join  sysobjects 
     obj on col.id=obj.id where obj.type='u'
    and obj.name='brands'
    

    3.systypes
    保存当前数据库中的所有数据类型,包含系统提供的数据类型和用户定义的数据类型。比如查看所有的用户表

    select obj.name from systypes stype  join sysobjects obj
    on stype.id=obj.id where xtype='u'
    
    
    其中xtype分别对应:
    
    C = CHECK 约束 
    D = 默认值或 DEFAULT 约束 
    F = FOREIGN KEY 约束 
    FN = 标量函数 
    IF = 内嵌表函数 
    K = PRIMARY KEY 或 UNIQUE 约束 
    L = 日志 
    P = 存储过程 
    R = 规则 
    RF = 复制筛选存储过程 
    S = 系统表 
    TF = 表函数 
    TR = 触发器 
    U = 用户表 
    V = 视图 
    X = 扩展存储过程
    
    五:Object_ID函数

    如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法。
    比如要取出约束名为fk_xxx_xx的ID值

    select object_id('fk_xxx_xx','F')
    
    type如下列表:
    
    AF = Aggregate function (CLR)
    C = CHECK constraint
    D = DEFAULT (constraint or stand-alone)
    F = FOREIGN KEY constraint
    FN = SQL scalar function
    FS = Assembly (CLR) scalar-function
    FT = Assembly (CLR) table-valued function
    IF = SQL inline table-valued function
    IT = Internal table
    P = SQL Stored Procedure
    PC = Assembly (CLR) stored-procedure
    PG = Plan guide
    PK = PRIMARY KEY constraint
    R = Rule (old-style, stand-alone)
    RF = Replication-filter-procedure
    S = System base table
    SN = Synonym
    SQ = Service queue
    TA = Assembly (CLR) DML trigger
    TF = SQL table-valued-function
    TR = SQL DML trigger
    U = Table (user-defined)
    UQ = UNIQUE constraint
    V = View
    X = Extended stored procedure
    

    其实上面的就是这样的

    #
    select ID from sysobjects where name='fk_xxx_xx' and type='F'
    

    相关文章

      网友评论

        本文标题:数据分析之SQL系统表

        本文链接:https://www.haomeiwen.com/subject/afvscqtx.html