在实际的业务需求中,我们经常需要拿到数据库的全部表名,展示在后台中或者输出到文件里。
具体到业务中的需求比如:
如果你在实际业务中遇到了这个需求,请在评论区留下你的实际业务需求,以供大家参考。

基本的语句为 SELECT table_name FROM information_schema.tables 。
但是这个并不符合业务需求,因为这会返回全部的表名,而业务中需要限定是哪个数据库,并且,不同的业务可能会使用不同的表前缀,所以最好可以限定表前缀,并且需要展示表的注释,不然大家也不清楚表是属于哪个业务的。
所以,完整的SQL语句如下。
SELECT
TABLE_NAME,
TABLE_COMMENT
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'TABLE_SCHEMA'
AND TABLE_NAME LIKE 'x_%'
AND TABLE_NAME NOT LIKE 'xx_exp%'
ORDER BY
TABLE_NAME
需要配置几个参数,并且已经按表名进行排序,TABLE_COMMENT 为表注释。
运行结果如下图

show full columns 可以展示表的全部字段,并包含完整信息,完整SQL语句为
show full columns from xxx
其中xxx为具体的表名,注意替换,执行结果如下图。

show full columns 执行结果的具体含义分别为,以下说明来自MySQL官方文档。
Field
列的名称。
Type
列数据类型。
Collation
非二进制字符串列或NULL其他列的排序规则。仅当您使用FULL关键字时,才显示此值。
Null
列的可空性。值是YES是否NULL可以将值存储在列中(NO如果不能)。
Key
列是否被索引:
Key为空,则该列要么不被索引,要么仅被索引为多列非唯一索引中的第二列。Key为is PRI,PRIMARY KEY则列为a 或为多列中的列之一PRIMARY KEY。Key为UNI,则该列为UNIQUE索引的第一列。(UNIQUE索引允许使用多个NULL值,但是您可以NULL通过检查Null字段来判断该列是否允许使用。)Key为is MUL,则该列是非唯一索引的第一列,在该列中允许多次出现给定值。如果超过一个Key值适用于表中给定的列,Key显示一个具有最高优先级,顺序PRI,UNI,MUL。
甲UNIQUE索引可被显示为PRI,如果它不能包含NULL值并没有PRIMARY KEY在表中。甲UNIQUE索引可能会显示为MUL如果若干列形成复合UNIQUE索引;尽管各列的组合是唯一的,但各列仍可以容纳多次出现的给定值。
Default
列的默认值。这是NULL如果列有一个明确的默认NULL,或者如果列定义不包括DEFAULT条款。
Extra
有关给定列的任何其他可用信息。在以下情况下,该值是非空的:
auto_increment具有AUTO_INCREMENT属性的列。on update CURRENT_TIMESTAMP对于TIMESTAMP或DATETIME有列ON UPDATE CURRENT_TIMESTAMP属性。VIRTUAL GENERATED或VIRTUAL STORED用于生成的列。DEFAULT_GENERATED对于具有表达式默认值的列。Privileges
您具有该列的特权。仅当您使用FULL关键字时,才显示此值。
Comment
列定义中包含的任何注释。仅当您使用FULL关键字时,才显示此值。
SELECT table_name FROM information_schema.tables 配合show full columns 可以展示数据库里全部表和表的结构。