在 MySQL 中使用 SHOW COLUMNS 查看一个表的所有的列
在 MySQL 中,SHOW COLUMNS
语句用来显示一个表的所有的列的信息。
有时候,您或许想查看一个表中的所有列的信息。MySQL 提供了两个命令帮你完成此操作:
- 使用
DESC
语句列出表中的列 - 使用
SHOW COLUMNS
语句列出表中的列
本文主要说明 SHOW COLUMNS
语句的用法。
SHOW COLUMNS 用法
要显示一个表的所有的列,请按照如下方法使用 SHOW COLUMNS
语句:
SHOW [FULL] COLUMNS FROM [database_name.]table_name [LIKE pattern]
这里,
database_name
是数据库的名字。当你已经选择了一个数据库作为默认数据库时,database_name.
是可以省略的。table_name
是表的名字。FULL
关键字用来输出更多的信息,包括:Collation
,Privileges
和Comment
。它是可选的。LIKE pattern
是可选的,它用来对列名按照模式过滤。
返回的列
MySQL SHOW COLUMNS
语句总共可返回 9 个列,其中 Collation
, Privileges
和 Comment
这 3 个列只有使用了 FULL
关键字后才返回:
Field
- 此列的名称
Type
- 此列的数据类型
Null
YES
或者NO
指示此列是否可以为 NULLKey
- 此列的索引定义
Default
- 此列的默认值
Extra
- 其他的额外信息。比如
auto_increment
等。 Collation
- 非二进制字符串列的排序规则,其他列为
NULL
。 Privileges
- 你对此列拥有的权限。
Comment
- 此列的注释
MySQL DESC 实例
以下实例显示如何使用 SHOW COLUMNS
语句列出来自 Sakila 示例数据库中的表 actor
表中的列。
-
使用 mysql 客户端工具连接到 MySQL 服务器:
mysql -u root -p
输入
root
帐户的密码并按Enter
:Enter password: ********
-
直接运行下面的命令尝试列出所有的列:
SHOW COLUMNS FROM actor;
此时,MySQL 会返回一个错误:ERROR 1046 (3D000): No database selected 。 因为您还未指定默认的数据库。
-
在
SHOW COLUMNS
语句中指定数据库和表名:SHOW COLUMNS FROM sakila.actor;
下面是输出:
+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------------+------+-----+-------------------+-----------------------------------------------+ | actor_id | smallint unsigned | NO | PRI | NULL | auto_increment | | first_name | varchar(45) | NO | | NULL | | | last_name | varchar(45) | NO | MUL | NULL | | | last_update | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | +-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
-
使用
SHOW FULL COLUMNS
语句显示完整的列信息:SHOW FULL COLUMNS FROM sakila.actor;
下面是输出:
+-------------+-------------------+--------------------+------+-----+-------------------+-----------------------------------------------+---------------------------------+---------+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +-------------+-------------------+--------------------+------+-----+-------------------+-----------------------------------------------+---------------------------------+---------+ | actor_id | smallint unsigned | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | | | first_name | varchar(45) | utf8mb4_0900_ai_ci | NO | | NULL | | select,insert,update,references | | | last_name | varchar(45) | utf8mb4_0900_ai_ci | NO | MUL | NULL | | select,insert,update,references | | | last_update | timestamp | NULL | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | select,insert,update,references | | +-------------+-------------------+--------------------+------+-----+-------------------+-----------------------------------------------+---------------------------------+---------+
这里,相比较上面的输出,使用
FULL
关键字后,输出中多了 3 个列Collation
,Privileges
和Comment
。 -
使用 USE 命令设置默认的数据库:
USE sakila;
-
直接运行下面的命令尝试列出所有的列:
SHOW FULL COLUMNS FROM actor;
此时, 此命令的输出和上面的命令
SHOW FULL COLUMNS FROM sakila.actor;
相同。这是因为此时的默认数据库是sakila
。 -
使用
LIKE
过滤出列名以a
开头的所有的列:SHOW COLUMNS FROM actor LIKE 'a%';
下面是输出:
+----------+-------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------------+------+-----+---------+----------------+ | actor_id | smallint unsigned | NO | PRI | NULL | auto_increment | +----------+-------------------+------+-----+---------+----------------+
结论
在本文中,您学习了在 MySQL 中如何使用 SHOW COLUMNS
语句列出一个表的所有的列:
- 使用
FULL
关键字可以输出更多的信息 - 使用
LIKE
可以按字段的名称对结果进行过滤