获取SQLServer的最完整数据字典的SQL语句

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
获取SQLServer 的最完整数据字典的SQL 语句

 
其实网上已经流传了很多关于获取 SQLServer 的数据字典的版本,不过我相信这个应该是最全的了,本语句包括了表、字段、字段类型、字段长度、是否为空、是否递增字段、索引名称、索引的定位、索引类型、主键、外键等;通过合理的裁剪可以很方便的生成相应的数据字典。
 
SELECT
sysobjects.name AS 表名称 --sysproperties.[value] AS 表说明 ,
 syscolumns.name AS 字段名称 ,--properties.[value] AS 字段说明 ,
 systypes.name AS 字段类型 ,
 syscolumns.length AS 字段长度 ,ISNULL(COLUMNPROPERTY(syscolumns.id, syscolumns.name,'Scale'), 0) AS 小数位数 ,
CASE WHEN syscolumns.isnullable=0
 THEN ''
ELSE ' √ 'END AS 是否为空 ,
CASE WHEN syscomments.text IS 
 THEN '' ELSE syscomments.text
 END AS 缺省值 
CASE WHEN COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'IsIdentity')= 1
THEN ' √ ' ELSE ''
 END AS 递增字段 ,
CASE WHEN sysindexes.name IS NULL
THEN ''
 ELSE sysindexes.name
END AS 索引名称 ,CASE WHEN sysindexkeys.keyno IS NULL
 THEN ''ITPUBELSE CONVERT(VARCHAR(10),sysindexkeys.keyno )
 END AS 索引位置 ,
CASE WHEN sysindexes.indid=1

 THEN ' 聚集索引 '
 WHEN sysindexes.indid>1 AND sysindexes.indid<>255
 THEN ' 非聚集索引
WHEN sysindexes.indid IS NULL
THEN 
 ' 其他 '
END AS 索引类型 ,CASE WHEN EXIST
(SELECT 
  FROM sysobjects
WHERE xtype = 'PK' AND name 
 (SELECT name
     FROM sysindexes
  WHERE ind
   (SELECT indid
      FROM sysindexkeys
      WHERE id = syscolumns.id AND colid = syscolumns.colid)
 THEN ' √ ' ELSE ''
 END AS 主键 ,
CASE WHEN sysforeignkeys.constid IS NULL
 END AS 外健 
FROM syscolumns                            -- 数据表字段 
INNER JOIN sysobjects                        -- 数据对象 
  ON sysobjects.id = syscolumns.id
INNER JOIN systypes                         -- 数据类型 
  ON syscolumns.xtype = systypes.xtype
LEFT OUTER JOIN sysproperties properties       -- 字段属性信息 
  ON syscolumns.id = properties.idI
 AND syscolumns.colid = properties.smallid
LEFT OUTER JOIN sysproperties                -- 表属性信息 
  ON sysobjects.id = sysproperties.id
  AND sysproperties.smallid = 0
 LEFT OUTER JOIN syscomments                -- 注释信息 
  ON syscolumns.cdefault = syscomments.
 LEFT OUTER JOIN sysindexkeys                -- 索引中的键或列的信息 
  ON sysindexkeys.id = syscolumns
 AND sysindexkeys.colid = syscolumns.col
LEFT OUTER JOIN sysindexes                  -- 数据库 索引表 
  ON sysindexes.id = sysindexkeys.id
AND sysindexes.indid = sysindexkeys.indid
LEFT OUTER JOIN sysforeignkeysI
  ON sysforeignkeys.fkeyid = syscolumns.id
AND sysforeignkeys.fkey = syscolumns.colid
WHERE (sysobjects.xtype = 'U')
order by sysobjects.id,syscolumns.colid
 
 




本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/312764 ,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
7天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
46 10
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
76 0
|
2月前
|
SQL 数据库 数据安全/隐私保护
【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!
【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!
61 0
|
7天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
64 6
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据更新
【数据库SQL server】关系数据库标准语言SQL之数据更新
33 0
|
2月前
|
SQL 数据库 数据库管理
【数据库SQL server】关系数据库标准语言SQL的基本知识
【数据库SQL server】关系数据库标准语言SQL的基本知识
57 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
SQL 关系型数据库 MySQL
MySQL SQL语句给当前日期加一天和减一天
MySQL SQL语句给当前日期加一天和减一天
|
SQL 关系型数据库 MySQL
MYSQL 批量修改表前缀与删除数据表 sql 语句
MYSQL 批量修改表前缀与删除数据表 sql 语句