打印表名及其列名的 SQL 语句

Posted

技术标签:

【中文标题】打印表名及其列名的 SQL 语句【英文标题】:SQL statement to print table names and their column names 【发布时间】:2014-10-24 17:50:17 【问题描述】:
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)

有什么想法吗?

【问题讨论】:

SHOW TABLESSHOW [FULL] COLUMNS FROM | IN tbl_name [FROM | IN db_name] [LIKE 'pattern' | WHERE expr] +1 你为什么不给这个人投票,他提出了有趣的问题,并展示了他的尝试! Get columns of a table SQL SERVER的可能重复 谢谢 meda,我被卡住了。 【参考方案1】:

应该这样做:

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

【讨论】:

【参考方案2】:

在 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'

【讨论】:

@rene 没找到你。 嘿@rene 感谢您的指导。 :) 更新的答案。我希望它将来会对其他人有所帮助。【参考方案3】:

使用 Mssql 2008 版本尝试以下查询。此条目列名称及其所属的表。

SELECT  c.name  AS 'ColumnName', t.name AS 'TableName'
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = t.object_id
WHERE       c.name = c.name
ORDER BY    TableName, ColumnName;

【讨论】:

以上是关于打印表名及其列名的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

MySQL如何查询一个表的所有列名?

select 连接查询语句 SQL语句查询

MyBatis插件及示例----打印每条SQL语句及其执行时间

sql语句怎么查询指定表的列名

MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间

sql server中使用sql语句修改列名