如何显示表的列名?


17

情况很简单:您有一个MySQL数据库,其中只有一个SQL查询接口,并且想知道带有查询的数据库结构。您可以使用show tables;command 列出表,但是如何查看各个列的名称呢?

SELECT语句显示Empty set是否没有数据,因此无法使用。)


请注意,公认的解决方案是关于desc命令的最底层的解决方案。很好奇,它是最短的,但是投票最少。对我来说,这也是最好的。
mico

2
您要求一个简单的SQL查询。您的答案不是SQL,因此可以解释投票率偏低的原因。您可能应该将查询的标题更改为:“如何显示表的列名”
Lennart

好主意,现在我的答案更适合这个问题了。
mico

Answers:


36
select column_name from information_schema.columns where table_name='table'

2
同时,我发现此查询也很有用:show create table <table_name>您将表名用纯文本代替了<table_name>。这也给出了类型,而您的一个非常适合于上市。
mico 2011年

正如@mico所说:“显示创建表tbl_name \ G”可能是您的解决方案。参见dev.mysql.com/doc/refman/5.7/en/show-create-table.html “ \ G”部分仅用于格式化输出。问候。
tdaget

6

我自己发现的最佳解决方案是desc table_name命令。有关更多信息,请参见MySQL表列表。该命令提供了一个数据库表的描述,而这正是我试图找出的表。


6

要确保您列出当前数据库的表中的列,请使用DATABASE()或SCHEMA()函数。如果您不在当前数据库中,则返回NULL。此查询将按定义列的顺序显示表中的列:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;


3

您如何看待各个表格标题?

你是说表注释吗?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+

我想要这些列名,并且由于快速回答,已经有了几种方法。杰克,也感谢这个评论。
mico 2011年

1
您介意将您的问题重新措词以使其更清楚地是您所关注的列吗?
杰克说尝试topanswers.xyz 2011年

2
SHOW COLUMNS FROM mydb.mytable;

其中mydb-是包含所需表的数据库

mytable-需要的表

它返回列的信息(例如列的名称,类型等)


1
不建议使用很少的代码片段,而无需解释它们如何解决OP的问题。请尝试在您的答案中添加更多详细信息。
埃里克

0

你需要加入information_schema.tablesinformation_schema.columns一起获得的表和字段细节的列表。

information_schema.columns不仅显示有关表格的详细信息,还显示视图。无法从该系统视图中仅过滤表详细信息。

因此,您需要加入。

查询示例:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.