sqlserver 查询数据表

1. 如何获取所有架构及其包含的数据表名称

 

1
2
3
4
5
6
7
8
9
SELECT  
    s.name AS 架构名称, 
    t.name AS 数据表名称 
FROM  
    sys.schemas s 
INNER JOIN  
    sys.tables t ON s.schema_id = t.schema_id 
ORDER BY  
    s.name, t.name;

 

在这个查询中:

  • sys.schemas 视图包含数据库中所有架构的信息。s.name 字段表示架构的名称。
  • sys.tables 视图包含数据库中所有用户表的信息。t.name 字段表示表的名称。
  • s.schema_id = t.schema_id 条件用于将架构与其包含的表关联起来。
  • ORDER BY s.name, t.name 子句用于按架构名称和表名称对结果进行排序。

执行这个查询后,你将得到一个结果集,其中包含所有架构及其包含的数据表的名称。每个架构下的表将按表名称排序列出。

 

 

2. 查询数据表的数据字典包含架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
SELECT  
    (CASE WHEN a.colorder = 1 THEN schema_name.name + '.' + d.name ELSE '' END) AS 表名, 
    a.colorder AS 字段序号, 
    a.name AS 字段名, 
    (CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END) AS 标识, 
    (CASE WHEN EXISTS ( 
        SELECT 1 
        FROM sysobjects so 
        INNER JOIN sysindexes si ON so.id = si.id 
        INNER JOIN sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid 
        WHERE so.id = a.id 
          AND so.xtype = 'U' 
          AND sik.colid = a.colid 
          AND EXISTS ( 
              SELECT 1 
              FROM sysobjects pk 
              WHERE pk.parent_obj = si.id 
                AND pk.xtype = 'PK' 
          
    ) THEN '√' ELSE '' END) AS 主键, 
    b.name AS 类型, 
    a.length AS 占用字节数, 
    COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 长度, 
    ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数, 
    (CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END) AS 允许空, 
    ISNULL(e.text, '') AS 默认值, 
    ISNULL(g.[value], '') AS 字段说明, 
    schema_name.name AS 架构名 
FROM  
    syscolumns a 
    LEFT JOIN systypes b ON a.xtype = b.xusertype 
    INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties' 
    INNER JOIN sys.schemas schema_name ON d.uid = schema_name.schema_id  -- 加入架构信息 
    LEFT JOIN syscomments e ON a.cdefault = e.id 
    LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id 
ORDER BY  
    schema_name.name,  -- 首先按架构排序 
    d.name,  
    a.id,  
    a.colorder;

  

 

posted @   雨中上人  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示