有没有办法使用命令获取按创建日期或上次更新日期排序的MySQL数据库列表?
答案 0 :(得分:16)
试试这个,如果您想要更新日期,可以通过update_time
订购SELECT
table_schema,
MAX(create_time) create_time,
MAX(update_time) update_time
FROM information_schema.tables
Group by TABLE_SCHEMA
Order by create_time desc
答案 1 :(得分:1)
Information_schema数据库包含有关数据库的元数据:
SELECT distinct table_schema
FROM information_schema.tables
Order by update_time
答案 2 :(得分:1)
如果您想按最新创建日期从information_schema
订单获取数据库名称列表,请查看以下代码:
SELECT table_schema, MAX(create_time) create_time, MAX(update_time) update_time
FROM information_schema.tables WHERE create_time IS NOT NULL
GROUP BY TABLE_SCHEMA
ORDER BY create_time DESC;
从上面的查询得到的结果,我看到create_time列的结果为null值。我假设默认情况下可以在mysql安装程序中创建这些记录,因此请进行一些改进。
为null create_time记录以上的过滤器添加WHERE create_time IS NOT NULL
:
SELECT table_schema, MAX(create_time) create_time, MAX(update_time) update_time
FROM information_schema.tables WHERE create_time IS NOT NULL
GROUP BY TABLE_SCHEMA
ORDER BY create_time DESC;
注意:如果您只想使用 table_schema 的结果,并且不想使用DISTINCT
和MAX()
,则可以使用GROUP BY
。
为此,您需要使用以下代码:
SELECT DISTINCT table_schema
FROM information_schema.tables
ORDER BY update_time
如果有任何疑问,请告诉我。
我希望这有帮助。
答案 3 :(得分:1)
考虑以下架构和查询
create table xInnodb
( i int
); -- ie: engine=INNODB
create table xMyISAM
( i int
)engine=MyISAM;
insert xInnodb (i) values (1);
insert xMyISAM (i) values (1);
-- or even update statements after the fact
SELECT table_schema,
table_name,
engine,
create_time,
update_time
FROM information_schema.tables
where TABLE_SCHEMA ='so_gibberish' -- my database name
and table_type='BASE TABLE' -- don't show views
Order by create_time desc;
+--------------+------------+--------+---------------------+---------------------+
| table_schema | table_name | engine | create_time | update_time |
+--------------+------------+--------+---------------------+---------------------+
| so_gibberish | xmyisam | MyISAM | 2015-12-12 00:03:18 | 2015-12-12 00:10:54 |
| so_gibberish | xinnodb | InnoDB | 2015-12-12 00:03:17 | NULL |
+--------------+------------+--------+---------------------+---------------------+
您会发现innodb表格update_time
为NULL
可以在名为The INFORMATION_SCHEMA TABLES Table的手册页中阅读:
从MySQL 5.7.2开始,UPDATE_TIME显示时间戳值 在InnoDB表上执行的最后一次UPDATE,INSERT或DELETE 没有分区。以前,UPDATE_TIME显示NULL值 InnoDB表。
答案 4 :(得分:0)
尝试此操作以显示所有数据库并创建时间......
SELECT table_schema,create_time FROM INFORMATION_SCHEMA.TABLES;
注意:我没有测试过这个