打印表名及其列名的 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 TABLES
和 SHOW [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 语句的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis插件及示例----打印每条SQL语句及其执行时间