zoukankan      html  css  js  c++  java
  • sql server 语句获取表的描述,主键等等

    sql语句添加表,字段的描述

    描述类型全部设置为:MS_Description

    --添加表的描述
    --格式如右:execute sp_addextendedproperty 'MS_Description','字段备注信息','user','dbo','table','字段所属的表名','column','添加注释的字段名';
    
    --添加表描述
    EXECUTE sp_addextendedproperty 'C', '课程表', 'user', 'dbo', 'table', 'Course',NULL, NULL;
        
    --添加字段描述
    EXECUTE sp_addextendedproperty 'MS_Description', '课程ID', 'user', 'dbo','table', 'Course', 'column', 'CourseId';

    或者:右键表(列)的属性,找到扩展属性

    ①获取表名

    --查询所有的表名称
    SELECT name FROM  sys.objects obj WHERE obj.type='U'; -- xtype:类型可以区分表,视图,存储过程,函数等等

    ②获取表的描述  sys.extended_properties  这张表存的扩展描述

    SELECT  obj.name 表名 ,
            ds.value 描述
    FROM    sys.extended_properties ds
            LEFT JOIN sys.objects obj ON ds.major_id = obj.object_id
    WHERE   ds.minor_id = 0
            AND obj.name = 'Course';

    最后整理:

    --最后整理
    SELECT obj.name,
           se.value
    FROM sys.objects obj
        LEFT JOIN [sys].[extended_properties] se
            ON obj.object_id = se.major_id
               AND se.minor_id = 0
    WHERE obj.type = 'U';

    ③获取表的主键信息

    --表 sys.indexes
    SELECT * FROM sys.indexes  WHERE is_primary_key = 1   AND object_id =Object_Id('Course')

    --最后整理
    SELECT obj.name,
           CAST(CASE
                    WHEN
                    (
                       SELECT COUNT(1) FROM sys.indexes  WHERE is_primary_key = 1   AND object_id =obj.object_id
                    ) >= 1 THEN
                        1
                    ELSE
                        0
                END AS BIT) AS HasPrimaryKey
    FROM sys.objects obj
    WHERE obj.type = 'U';

     ④获取主键的类型和名称

    --得到表的主键列id
    SELECT sc.column_id
    FROM sys.indexes si
        INNER JOIN sys.index_columns sc
            ON si.index_id = sc.index_id
               AND si.object_id = sc.object_id
    WHERE si.is_primary_key = 1
          AND si.object_id = OBJECT_ID('Course');
     --获取主键类型和名称
    SELECT TOP 1
           colm.name AS TablePrimarkeyType,
           systype.name AS TablePrimarkeyName
    FROM sys.columns colm
        INNER JOIN sys.types systype
            ON colm.system_type_id = systype.system_type_id
    WHERE colm.object_id = OBJECT_ID('Course')
          AND colm.column_id IN (
                                    SELECT ic.column_id
                                    FROM sys.indexes idx
                                        INNER JOIN sys.index_columns ic
                                            ON idx.index_id = ic.index_id
                                               AND idx.object_id = ic.object_id
                                    WHERE idx.object_id = OBJECT_ID('Course')
                                          AND idx.is_primary_key = 1
                                );

     

     --整理
    SELECT obj.name,
           t.TablePrimarkeyType,
           t.TablePrimarkeyName
    FROM sys.objects obj
        OUTER APPLY
    (
        SELECT TOP 1
               colm.name AS TablePrimarkeyType,
               systype.name AS TablePrimarkeyName
        FROM sys.columns colm
            INNER JOIN sys.types systype
                ON colm.system_type_id = systype.system_type_id
        WHERE colm.object_id = obj.object_id
              AND colm.column_id IN (
                                        SELECT ic.column_id
                                        FROM sys.indexes idx
                                            INNER JOIN sys.index_columns ic
                                                ON idx.index_id = ic.index_id
                                                   AND idx.object_id = ic.object_id
                                        WHERE idx.object_id = obj.object_id
                                              AND idx.is_primary_key = 1
                                    )
    ) t
    WHERE obj.type = 'U';

     

     ⑤最终结果:

    --获取表的结构  表名,拥有着,行数,是否拥有主键,表描述,表的主键,表的主键名称
    SELECT obj.name Tablename,
           schem.name Schemname,
           idx.rows,
           CAST(CASE
                    WHEN
                    (
                        SELECT COUNT(1)
                        FROM sys.indexes
                        WHERE object_id = obj.object_id
                              AND is_primary_key = 1
                    ) >= 1 THEN
                        1
                    ELSE
                        0
                END AS BIT) HasPrimaryKey,
            b.value  TableDesc,
            t.*
    FROM sys.objects obj
        INNER JOIN sysindexes idx   --行数
            ON obj.object_id = idx.id
               AND idx.indid <= 1
        INNER JOIN sys.schemas schem   --架构
            ON obj.schema_id = schem.schema_id
        LEFT JOIN sys.extended_properties b  --描述
            ON obj.object_id = b.major_id 
               AND b.minor_id = 0  AND b.name='MS_Description'
        OUTER APPLY  --主键名称和类型
    (
        SELECT TOP 1
               colm.name AS TablePrimarkeyType,
               systype.name AS TablePrimarkeyName
        FROM sys.columns colm
            INNER JOIN sys.types systype
                ON colm.system_type_id = systype.system_type_id
        WHERE colm.object_id = obj.object_id
              AND colm.column_id IN (
                                        SELECT ic.column_id
                                        FROM sys.indexes idx
                                            INNER JOIN sys.index_columns ic
                                                ON idx.index_id = ic.index_id
                                                   AND idx.object_id = ic.object_id
                                        WHERE idx.object_id = obj.object_id
                                              AND idx.is_primary_key = 1
                                    )
    ) t
    WHERE obj.type = 'U'
    -- AND obj.name LIKE 'My_%'
    ORDER BY obj.name;

  • 相关阅读:
    向对象数组中添加新的属性 Jim
    vuecli3.0 postcsspxtoviewport将px转化为vwvh适配/Web 端屏幕适配方案 Jim
    js深拷贝与浅拷贝 Jim
    行业死亡案例汇总(客观记录不做评价)
    wins和linux 系统不同编码格式导致的.py执行问题: bad interpreter: No such or file directory
    Pyhon之类学习1
    How to handle error In $.get()
    sql 修改列名及表名
    程序设计类网站
    数据类型
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10306786.html
Copyright © 2011-2022 走看看