雖然我們會將每個欄位的描述寫在描述欄位中
但是畢竟要查詢所有欄位的定義實在不怎樣方便。我們可以利用下面的語法來一覽無遺。
--顯示所有資料庫名稱
select name
from master.dbo.sysdatabases
--顯示某資料庫中有多少資料表
USE "資料庫名稱"
SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']'
AS SchemaTable
FROM sys.tables
--顯示某個資料庫中的每個資料表的每個欄位描述
USE "資料庫名稱"
SELECT a.Table_schema +'.'+a.Table_name as 表格名稱
,b.COLUMN_NAME as 欄位名稱
,b.DATA_TYPE as 資料型別
,isnull(b.CHARACTER_MAXIMUM_LENGTH,'') as 長度
,isnull(b.COLUMN_DEFAULT,'') as 預設值
,b.IS_NULLABLE as 允許空值
,( SELECT value
FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default)
WHERE name='MS_Description'
and objtype='COLUMN'
and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME
) as 欄位備註
FROM
INFORMATION_SCHEMA.TABLES a
LEFT JOIN INFORMATION_SCHEMA.COLUMNS b
ON a.TABLE_NAME = b.TABLE_NAME
WHERE TABLE_TYPE='BASE TABLE'
ORDER BY a.TABLE_NAME
, b.ORDINAL_POSITION