2011年10月11日 星期二

SQL SERVER-取得資料庫所有資料表,取得資料表所有欄位


參考2
----
SELECT * FROM INFORMATION_SCHEMA.Tables

SELECT * FROM INFORMATION_SCHEMA.Columns Where Table_Name = 'TableName'

SELECT 資料行名稱=COLUMN_Name ,資料型別=DATA_TYPE,長度=CHARACTER_MAXIMUM_LENGTH ,是否允許NULL=IS_NULLABLE , 預設值=COLUMN_DEFAULT FROM INFORMATION_SCHEMA.Columns Where Table_Name = 'TableName'



SELECT
    a.TABLE_NAME                as 表格名稱,
    b.COLUMN_NAME               as 欄位名稱,
    b.DATA_TYPE                 as 資料型別,
    b.CHARACTER_MAXIMUM_LENGTH  as 最大長度,
    b.COLUMN_DEFAULT            as 預設值,
    b.IS_NULLABLE               as 允許空值,
    (
        SELECT
            value
        FROM
            fn_listextendedproperty (NULL, 'schema', 'dbo', '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, ordinal_position

---
更完整的: 請參考來源

SELECT  Cols.TABLE_NAME,
        Cols.COLUMN_NAME,
        Cols.ORDINAL_POSITION,
        Cols.DATA_TYPE,
        Cols.NUMERIC_PRECISION,
        Cols.NUMERIC_SCALE,      
        Cols.IS_NULLABLE,
        Cols.CHARACTER_MAXIMUM_LENGTH,      
        COLUMNPROPERTY(object_id(Cols.TABLE_NAME), Cols.COLUMN_NAME, 'IsIdentity') AS IsIdentity,
        ( SELECT    COUNT(KCU.COLUMN_NAME)
          FROM      INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
                    INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON KCU.TABLE_NAME = TC.TABLE_NAME
                                                                          AND KCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME
                                                                          AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
          WHERE     KCU.TABLE_NAME = Cols.TABLE_NAME
                    AND KCU.COLUMN_NAME = Cols.COLUMN_NAME
        ) AS IsIndex
FROM    [INFORMATION_SCHEMA].[COLUMNS] Cols
ORDER BY Cols.TABLE_NAME,
        Cols.ORDINAL_POSITION

沒有留言:

張貼留言