mysql 如何获取数据库下所有的表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 如何获取数据库下所有的表相关的知识,希望对你有一定的参考价值。

例如 select * from (当前数据库下所有的表) where .....

SELECT
  table_name   AS  `表名`,
  table_type   AS  `类型`,
  engine       AS  `引擎`,
  VERSION AS `版本`,
  TABLE_COLLATION AS `字符集`
FROM
  information_schema.tables
WHERE
  table_schema = 'test'
ORDER BY
  table_name DESC;

+------------------+------------+--------+------+-------------------+
| 表名             | 类型       | 引擎   | 版本 | 字符集            |
+------------------+------------+--------+------+-------------------+
| test_sub_student | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| test_sub2        | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| test_sub         | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| test_rollup_1    | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| test_main_class  | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| test_main2       | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| test_main        | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| testuser         | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| td_testsalary    | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| sale_report      | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
| log_table        | BASE TABLE | InnoDB |   10 | latin1_swedish_ci |
+------------------+------------+--------+------+-------------------+
11 rows in set (0.00 sec)

参考技术A --参考下面的sql,去掉table_name的条件,就会出来所有的表名了
Select COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释
from INFORMATION_SCHEMA.COLUMNS
Where table_name = 'companies'--表名
AND table_schema = 'testhuicard'--数据库名
AND column_name LIKE 'c_name'--字段名

本回答被提问者和网友采纳
参考技术B show tables即为显示当前数据库中所有的表。又如:

mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.05 sec)

这个是显示“mysql”这个数据库中的所有的表,一共有28张。
参考技术C

    没有这样的查询命令,你可以使用mysqldump导出数据库下载到本地

    然后使用记事本打开使用搜索功能搜索;


    如果是查看数据库下的所以表,登陆mysql进入想要的数据库show下

    mysql -uroot -p

       >use testdata;

       >show tables;

参考技术D show tables;

如何从 SQL Server 中特定数据库的表中获取所有列名?

【中文标题】如何从 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() 函数中也会给我零记录。

以上是关于mysql 如何获取数据库下所有的表的主要内容,如果未能解决你的问题,请参考以下文章

如何在mysql中获取所有具有自动增量主键的表?

如何从mysql数据库中获取一个表的表结构

如何使用mysql正确获取日期列当前日期的所有数据库

如何从 SQL Server 中特定数据库的表中获取所有列名?

如何在 PostgreSQL 中仅获取数据库的表名

如何从表中获取所有数据,包括表 ID