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)
有什么想法吗?
答案 0 :(得分:6)
这应该这样做:
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
答案 1 :(得分: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'
答案 2 :(得分:0)
您正在使用哪个Sql Server服务器。对于2008版,请尝试以下查询。此项目列名称及其所属的表。
async def search(ctx, *, message)