mysql 如何获取数据库下所有的表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 如何获取数据库下所有的表相关的知识,希望对你有一定的参考价值。
例如 select * from (当前数据库下所有的表) where .....
SELECTtable_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 如何获取数据库下所有的表的主要内容,如果未能解决你的问题,请参考以下文章