2014-02-07 49 views
0

任何人都可以帮助我的查询获取单行中的表名,列名,列数据类型,isprimary等。如何在单行中获取列名称的表结构?

为如: 我的职员表的输出与列E_ID,E_Name,E_City应如下


TABNAME的ColumnName数据类型值isPrimary COLUMNNAME数据类型值isPrimary COLUMNNAME数据类型

员工 - E_ID - 诠释 - S - E_Name - varchar - N - E_City - varchar


回答

0

可以使用INFORMATION_SCHEMA系统视图来得到这个信息的任何表。以下是一个示例:

SELECT 
    c.TABLE_NAME, 
    c.COLUMN_NAME, 
    c.DATA_TYPE, 
    CASE WHEN tc.CONSTRAINT_NAME IS NOT NULL THEN 1 ELSE 0 END AS IsPrimary 
FROM INFORMATION_SCHEMA.COLUMNS c 
    LEFT JOIN (
     INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu 
     JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc 
     ON tc.CONSTRAINT_NAME = ccu.CONSTRAINT_NAME 
       AND tc.CONSTRAINT_SCHEMA = ccu.CONSTRAINT_SCHEMA 
       AND tc.CONSTRAINT_CATALOG = ccu.CONSTRAINT_CATALOG 
      AND tc.CONSTRAINT_TYPE = 'PRIMARY KEY' 
    ) 
    ON ccu.COLUMN_NAME = c.COLUMN_NAME 
     AND ccu.TABLE_NAME = c.TABLE_NAME 
     AND ccu.TABLE_SCHEMA = c.TABLE_SCHEMA 
     AND ccu.TABLE_CATALOG = c.TABLE_CATALOG 
WHERE c.TABLE_NAME = 'Employee'