SQL Server-SQL抓出table 欄位、大小、說明

SQL SERVER

最近在重整一些table東西,怕忘記語法,做此紀錄... 



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 



-------------------------------------------這是指令碼------------------------------------------------------

簡單介紹一下上面的語法

--INFORMATION_SCHEMA.TABLES //查詢該資料庫裡所有資料表資訊

--INFORMATION_SCHEMA.COLUMNS  //查詢該資料表裡所有資料欄位資訊

--fn_listextendedproperty //列出資料表欄位的資訊(為了取得 欄位描述 而使用)

--※Chinese_Taiwan_Stroke_CI_AS  //這是指定資料庫的編碼(此為 台灣繁體中文且不分大小寫)

以Northwind為例

元哥的筆記