如何从 SQL Server 中特定数据库的表中获取所有列名?
Posted
技术标签:
【中文标题】如何从 SQL Server 中特定数据库的表中获取所有列名?【英文标题】:How can I get all column names from a table from a specific database in SQL Server? 【发布时间】:2021-12-18 00:36:29 【问题描述】:此查询给出所有数据库中的所有列名。
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
但我需要从特定数据库的表中获取所有列名。因为我有多个同名的表。怎么做?有没有类似的
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATABASE_NAME = 'database_name' TABLE_NAME = 'table_name'
我正在使用 xampp 服务器和 phpMyAdmin。
【问题讨论】:
【参考方案1】:引用the fine manual:
26.3.8 INFORMATION_SCHEMA 列表
...
COLUMNS 表有这些列:
TABLE_CATALOG The name of the catalog to which the table containing the column belongs. This value is always def. TABLE_SCHEMA The name of the schema (database) to which the table containing the column belongs.
...
..你应该在SELECT *
时看到它?
【讨论】:
【参考方案2】:这是我预期结果的 SQL
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='database_name' AND TABLE_NAME = 'table_name';
【讨论】:
【参考方案3】:你想要这样的东西。
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'whatever'
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
mysql INFORMATION_SCHEMA 使用名为 TABLE_SCHEMA
的列来保存每个表的数据库。
【讨论】:
我应该在 DATABASE() 函数中传递数据库名称吗?没有在 DATABASE() 中传递任何内容并将表名代替“whatever”显示零记录。即使将数据库名称放在 DATABASE() 函数中也会给我零记录。以上是关于如何从 SQL Server 中特定数据库的表中获取所有列名?的主要内容,如果未能解决你的问题,请参考以下文章
如何从sql server中的表中查询json数组类型列的值?
如何从SQL表中选择特定行并在SQL Server中连接多个表?
如何在 SQL Server 上创建一个数据库角色,其中该角色的用户只能从一个视图中选择,而不能从视图中使用的表中选择?