SQL语句来打印表名和它们的列名
SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 
ORDER BY TABLE_NAME ASC
我使用这段代码来打印数据库的表名。 我想要做的是在每个表格中打印表名和列名。 我可以通过嵌套声明来做到这一点。
此代码正在查询窗口中的SQL Server上运行。
我试过这个
SELECT COL_NAME 
FROM 
    (SELECT TABLE_NAME 
     FROM INFORMATION_SCHEMA.TABLES 
     WHERE TABLE_TYPE = 'BASE TABLE' 
     ORDER BY TABLE_NAME ASC)
有任何想法吗?
这应该做到这一点:
SELECT C.TABLE_NAME, C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES T 
              WHERE T.TABLE_TYPE='BASE TABLE' AND C.TABLE_NAME=T.TABLE_NAME)
ORDER BY C.TABLE_NAME, C.COLUMN_NAME
在Sqlserver 2005中首先引入了INFORMATION_SCHEMA视图。
这些视图主要用于获取表格名称,列,视图,域等元数据,如表名,列名,列的数据类型等。
每个数据库都包含这些视图。 如果你想检查场景后面发生了什么,你可以通过sp_helptext来检查这些视图的逻辑。 喜欢
sp_helptext INFORMATION_SCHEMA.COLUMNS
通过使用上面的视图,你可以得到你想要的结果。 请检查以下查询。
SELECT T.TABLE_NAME,C.COLUMN_NAME,C.DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS C
    INNER JOIN INFORMATION_SCHEMA.TABLES T ON C.TABLE_NAME = T.TABLE_NAME
        AND C.TABLE_SCHEMA = T.TABLE_SCHEMA
    WHERE T.TABLE_TYPE = 'BASE TABLE'
上一篇: SQL statement to print table names and their column names
