SQL Server中Table字典数据的查询SQL示例代码
前言
在数据库系统原理与设计(第3版)教科书中这样写道:
数据库包含4类数据:
1.用户数据
2.元数据
3.索引
4.应用元数据
其中,元数据也叫数据字典,定义如下:
下面这篇文章就来给大家分享一个关于查询SQL Server Table 结构的SQL 语句。
T-SQL 如下:
SELECT
(
case
when
a.colorder=1
then
d.
name
else
''
end
) 表名,
a.colorder 字段序号,a.
name
字段名,
(
case
when
a.colorder=1
then
isnull
(f.value,
''
)
else
''
end
) 表说明,
(
case
when
COLUMNPROPERTY( a.id,a.
name
,
'IsIdentity'
)=1
then
'1'
else
'0'
end
)标识,
(
case
when
(
SELECT
count
(*)
FROM
sysobjects
WHERE
(
name
in
(
SELECT
name
FROM
sysindexes
WHERE
(id = a.id)
AND
(indid
in
(
SELECT
indid
FROM
sysindexkeys
WHERE
(id = a.id)
AND
(colid
in
(
SELECT
colid
FROM
syscolumns
WHERE
(id = a.id)
AND
(
name
= a.
name
)))))))
AND
(xtype =
'PK'
))>0
then
'1'
else
'0'
end
) 主键,b.
name
类型,a.length 占用字节数,
COLUMNPROPERTY(a.id,a.
name
,
'PRECISION'
)
as
长度,
isnull
(COLUMNPROPERTY(a.id,a.
name
,
'Scale'
),0)
as
小数位数,(
case
when
a.isnullable=1
then
'1'
else
'0'
end
) 允许空,
isnull
(e.text,
''
) 默认值,
isnull
(g.[value],
' '
)
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'
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
left
join
sys.extended_properties f
on
d.id=f.major_id
and
f.minor_id=0
--where b.name is not null
WHERE
d.
name
=
'DBA_Server'
--如果只查询指定表,加上此条件,此案例为表DBA_Server
order
by
a.id,a.colorder
查询出的结果如下: