下指令產生各Table 的描述資訊

  • 2319
  • 0

雖然我們會將每個欄位的描述寫在描述欄位中

但是畢竟要查詢所有欄位的定義實在不怎樣方便。我們可以利用下面的語法來一覽無遺。​


--顯示所有資料庫名稱
 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