在 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- 此列的数据类型
NullYES或者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可以按字段的名称对结果进行过滤