表或表字段等的注釋,是數據庫對象的擴展屬性同時也支持把一些注釋性的內容放到數據庫或數據庫對象中。
information_schema:系統視圖
sys.extended_properties:系統視圖
一、sqlserver 查詢某個表的列名稱、說明、備注、類型等
--sqlserver 查詢某個表的列名稱、說明、備注、類型等
SELECT
表名 = case when a.colorder = 1 then d.name else '' end,
表說明 = case when a.colorder = 1 then isnull(f.value, '') else '' end,
字段序號 = a.colorder,
字段名 = a.name,
標識 = case when COLUMNPROPERTY(a.id, a.name, 'IsIdentity')= 1 then '√' else '' end,
主鍵 = case when exists(
SELECT
1
FROM
sysobjects
where
xtype = 'PK'
and parent_obj = a.id
and name in (
SELECT
name
FROM
sysindexes
WHERE
indid in(
SELECT
indid
FROM
sysindexkeys
WHERE
id = a.id
AND colid = a.colid
)
)
) then '√' else '' end,
類型 = b.name,
占用字節數 = a.length,
長度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),
小數位數 = isnull(
COLUMNPROPERTY(a.id, a.name, 'Scale'),
0
),
允許空 = case when a.isnullable = 1 then '√' else '' end,
默認值 = isnull(e.text, ''),
字段說明 = isnull(g.[value], '')
FROM
syscolumns a
left join systypes b on a.xusertype = 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
d.name = '數據庫表名' --如果只查詢指定表,加上此where條件,tablename是要查詢的表名;去除where條件查詢所有的表信息
order by
a.id,
a.colorder
效果如圖:

二、查詢一個表的所有列名
--查詢一個表的所有列名
Select Name FROM SysColumns Where id=Object_Id('查詢的數據庫表名')
GO
select t.column_name from information_schema.columns t where t.table_name='查詢的數據庫表名';
第一局執行效果圖:

第二句執行效果圖:

三、查詢一個表的所有列名,字段的注釋
------查詢一個表的所有列名,字段的注釋
SELECT
A.name AS 表名,
B.name AS 字段名,
C.value AS 字段說明
FROM sys.tables A
INNER JOIN sys.columns B ON B.object_id = A.object_id
LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
WHERE A.name = '查詢的數據庫表名'
效果如圖:

四、查詢整個數據庫語句
/************************************************************
* Code formatted by SoftTree SQL Assistant ?v5.0.97
* Time: 2020/3/24 8:50:02
************************************************************/
-- 名名稱和字段名
SELECT
(
CASE WHEN a.colorder = 1 THEN d.name ELSE '' END
) 表名,
a.colorder 字段序號,
a.name 字段名,
(
CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' 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 '√' ELSE '' 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 '√' ELSE '' 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
ORDER BY
a.id,
a.colorder
