博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】 简单的3个SQL视图搞定所有SqlServer数据库字典
阅读量:4135 次
发布时间:2019-05-25

本文共 5262 字,大约阅读时间需要 17 分钟。

1. SqlServer2000数据库字典--表结构.sql
SELECT
 
TOP
 
100
 
PERCENT
 
--
a.id, 
      
CASE
 
WHEN
 a.colorder 
=
 
1
 
THEN
 d.name 
ELSE
 
''
 
END
 
AS
 表名, 
      
CASE
 
WHEN
 a.colorder 
=
 
1
 
THEN
 
isnull
(f.value, 
''
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
 dbo.sysindexes si 
INNER
 
JOIN
               dbo.sysindexkeys sik 
ON
 si.id 
=
 sik.id 
AND
 si.indid 
=
 sik.indid 
INNER
 
JOIN
               dbo.syscolumns sc 
ON
 sc.id 
=
 sik.id 
AND
 sc.colid 
=
 sik.colid 
INNER
 
JOIN
               dbo.sysobjects so 
ON
 so.name 
=
 si.name 
AND
 so.xtype 
=
 
'
PK
'
         
WHERE
 sc.id 
=
 a.id 
AND
 sc.colid 
=
 a.colid) 
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
 字段说明, d.crdate 
AS
 创建时间, 
      
CASE
 
WHEN
 a.colorder 
=
 
1
 
THEN
 d.refdate 
ELSE
 
NULL
 
END
 
AS
 更改时间
FROM
 dbo.syscolumns a 
LEFT
 
OUTER
 
JOIN
      dbo.systypes b 
ON
 a.xtype 
=
 b.xusertype 
INNER
 
JOIN
      dbo.sysobjects d 
ON
 a.id 
=
 d.id 
AND
 d.xtype 
=
 
'
U
'
 
AND
 
      d.status 
>=
 
0
 
LEFT
 
OUTER
 
JOIN
      dbo.syscomments e 
ON
 a.cdefault 
=
 e.id 
LEFT
 
OUTER
 
JOIN
      dbo.sysproperties g 
ON
 a.id 
=
 g.id 
AND
 a.colid 
=
 g.smallid 
AND
 
      g.name 
=
 
'
MS_Description
'
 
LEFT
 
OUTER
 
JOIN
      dbo.sysproperties f 
ON
 d.id 
=
 f.id 
AND
 f.smallid 
=
 
0
 
AND
 
      f.name 
=
 
'
MS_Description
'
ORDER
 
BY
 d.name, a.colorder
SqlServer2005数据库字典--表结构.sql
SELECT
 
TOP
 
100
 
PERCENT
 
--
a.id, 
      
CASE
 
WHEN
 a.colorder 
=
 
1
 
THEN
 d.name 
ELSE
 
''
 
END
 
AS
 表名, 
      
CASE
 
WHEN
 a.colorder 
=
 
1
 
THEN
 
isnull
(f.value, 
''
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
 dbo.sysindexes si 
INNER
 
JOIN
               dbo.sysindexkeys sik 
ON
 si.id 
=
 sik.id 
AND
 si.indid 
=
 sik.indid 
INNER
 
JOIN
               dbo.syscolumns sc 
ON
 sc.id 
=
 sik.id 
AND
 sc.colid 
=
 sik.colid 
INNER
 
JOIN
               dbo.sysobjects so 
ON
 so.name 
=
 si.name 
AND
 so.xtype 
=
 
'
PK
'
         
WHERE
 sc.id 
=
 a.id 
AND
 sc.colid 
=
 a.colid) 
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
 字段说明, d.crdate 
AS
 创建时间, 
      
CASE
 
WHEN
 a.colorder 
=
 
1
 
THEN
 d.refdate 
ELSE
 
NULL
 
END
 
AS
 更改时间
FROM
 dbo.syscolumns a 
LEFT
 
OUTER
 
JOIN
      dbo.systypes b 
ON
 a.xtype 
=
 b.xusertype 
INNER
 
JOIN
      dbo.sysobjects d 
ON
 a.id 
=
 d.id 
AND
 d.xtype 
=
 
'
U
'
 
AND
 
      d.status 
>=
 
0
 
LEFT
 
OUTER
 
JOIN
      dbo.syscomments e 
ON
 a.cdefault 
=
 e.id 
LEFT
 
OUTER
 
JOIN
      sys.extended_properties g 
ON
 a.id 
=
 g.major_id 
AND
 a.colid 
=
 g.minor_id 
AND
 
      g.name 
=
 
'
MS_Description
'
 
LEFT
 
OUTER
 
JOIN
      sys.extended_properties f 
ON
 d.id 
=
 f.major_id 
AND
 f.minor_id 
=
 
0
 
AND
 
      f.name 
=
 
'
MS_Description
'
ORDER
 
BY
 d.name, 字段序号
2.
SqlServer数据库字典--索引.sql
SELECT
 
TOP
 
100
 
PERCENT
 
--
a.id, 
      
CASE
 
WHEN
 b.keyno 
=
 
1
 
THEN
 c.name 
ELSE
 
''
 
END
 
AS
 表名, 
      
CASE
 
WHEN
 b.keyno 
=
 
1
 
THEN
 a.name 
ELSE
 
''
 
END
 
AS
 索引名称, d.name 
AS
 列名, 
      b.keyno 
AS
 索引顺序, 
CASE
 indexkey_property(c.id, b.indid, b.keyno, 
'
isdescending
'
      
WHEN
 
1
 
THEN
 
'
降序
'
 
WHEN
 
0
 
THEN
 
'
升序
'
 
END
 
AS
 排序, 
CASE
 
WHEN
 p.id 
IS
 
NULL
 
      
THEN
 
''
 
ELSE
 
'
'
 
END
 
AS
 主键, 
CASE
 
INDEXPROPERTY
(c.id, a.name, 
'
IsClustered
'
      
WHEN
 
1
 
THEN
 
'
'
 
WHEN
 
0
 
THEN
 
''
 
END
 
AS
 聚集, 
CASE
 
INDEXPROPERTY
(c.id, 
      a.name, 
'
IsUnique
'
WHEN
 
1
 
THEN
 
'
'
 
WHEN
 
0
 
THEN
 
''
 
END
 
AS
 唯一, 
      
CASE
 
WHEN
 e.id 
IS
 
NULL
 
THEN
 
''
 
ELSE
 
'
'
 
END
 
AS
 唯一约束, 
      a.OrigFillFactor 
AS
 填充因子, c.crdate 
AS
 创建时间, c.refdate 
AS
 更改时间
FROM
 dbo.sysindexes a 
INNER
 
JOIN
      dbo.sysindexkeys b 
ON
 a.id 
=
 b.id 
AND
 a.indid 
=
 b.indid 
INNER
 
JOIN
      dbo.syscolumns d 
ON
 b.id 
=
 d.id 
AND
 b.colid 
=
 d.colid 
INNER
 
JOIN
      dbo.sysobjects c 
ON
 a.id 
=
 c.id 
AND
 c.xtype 
=
 
'
U
'
 
LEFT
 
OUTER
 
JOIN
      dbo.sysobjects e 
ON
 e.name 
=
 a.name 
AND
 e.xtype 
=
 
'
UQ
'
 
LEFT
 
OUTER
 
JOIN
      dbo.sysobjects p 
ON
 p.name 
=
 a.name 
AND
 p.xtype 
=
 
'
PK
'
WHERE
 (
OBJECTPROPERTY
(a.id, N
'
IsUserTable
'
=
 
1
AND
 (
OBJECTPROPERTY
(a.id, 
      N
'
IsMSShipped
'
=
 
0
AND
 (
INDEXPROPERTY
(a.id, a.name, 
'
IsAutoStatistics
'
=
 
0
)
ORDER
 
BY
 c.name, a.name, b.keyno
3.
SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
SELECT
 
DISTINCT
 
      
TOP
 
100
 
PERCENT
 
isnull
(p.name,
''
AS
 父对象, o.xtype, 
      
CASE
 o.xtype 
WHEN
 
'
C
'
 
THEN
 
'
CHECK 约束
'
 
WHEN
 
'
D
'
 
THEN
 
'
默认值或DEFAULT约束
'
       
WHEN
 
'
F
'
 
THEN
 
'
FOREIGNKEY约束
'
 
WHEN
 
'
L
'
 
THEN
 
'
日志
'
 
WHEN
 
'
FN
'
 
THEN
 
'
标量函数
'
       
WHEN
 
'
IF
'
 
THEN
 
'
内嵌表函数
'
 
WHEN
 
'
P
'
 
THEN
 
'
存储过程
'
 
WHEN
 
'
PK
'
 
THEN
 
'
PRIMARYKEY约束
'
       
WHEN
 
'
RF
'
 
THEN
 
'
复制筛选存储过程
'
 
WHEN
 
'
S
'
 
THEN
 
'
系统表
'
 
WHEN
 
'
TF
'
 
THEN
 
'
表函数
'
       
WHEN
 
'
TR
'
 
THEN
 
'
触发器
'
 
WHEN
 
'
U
'
 
THEN
 
'
用户表
'
 
WHEN
 
'
UQ
'
 
THEN
 
'
UNIQUE 约束
'
       
WHEN
 
'
V
'
 
THEN
 
'
视图
'
 
WHEN
 
'
X
'
 
THEN
 
'
扩展存储过程
'
 
WHEN
 
'
R
'
 
THEN
 
'
规则
'
 
ELSE
 
NULL
       
END
 
AS
 类型, o.name 
AS
 对象名, o.crdate 
AS
 创建时间, o.refdate 
AS
 更改时间, 
      c.
text
 
AS
 声明语句,
OBJECTPROPERTY
(o.id, N
'
IsMSShipped
'
)
FROM
 dbo.sysobjects o 
Left
 
JOIN
      dbo.sysobjects p 
ON
 o.parent_obj 
=
 p.id 
LEFT
 
OUTER
 
JOIN
      dbo.syscomments c 
ON
 o.id 
=
 c.id
WHERE
 
--
(o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND 
      (
OBJECTPROPERTY
(o.id, N
'
IsMSShipped
'
=
 
0
AND
 (
isnull
(p.name,
''
<>
 N
'
dtproperties
'
)
ORDER
 
BY
 o.xtype 
DESC
你可能感兴趣的文章
解决maven项目不会预读xml文件,Invalid bound statement (not found): com.starry.dao.IUserDao.selAll
查看>>
hibernate动态hql查询,分页查询,调用方法即可查询
查看>>
hibernate懒加载用法和好处
查看>>
springmvc上传图片方法
查看>>
使用AJAX传数组,后台接受数组
查看>>
java基础-数组转换,删除,去重复(自己玩儿)
查看>>
spring框架bean初始化给变量赋值(生命周期)-自己写着玩儿
查看>>
java驼峰转下划线,下划线转驼峰
查看>>
ElasticSearch的安装与使用(一)
查看>>
Java 8时间和日期API 20例
查看>>
IDEA的简单操作方法
查看>>
页面刷新之后显示当前页面的方法(左边导航,右边内容)
查看>>
Bean转化工具类(bean转bean,对象转换,对象转map,map转对象)
查看>>
使用js禁止浏览器回退
查看>>
使用js获取url中的参数并添加到新的url中
查看>>
解决表单提交到后台,日期类型转换问题
查看>>
SpringMVC处理表单日期数据转换异常(Date)使用@InitBinder
查看>>
使用js实现的邮箱自动补全
查看>>
SQL使用[CDATA[]]来代替转义字符大于小于号;
查看>>
从前台传递多个对象给后台MVC接收,传递数组给后台
查看>>