Liệt kê database MySQL sắp xếp theo thời gian tạo
Sử dụng INFORMATION_SCHEMA.TABLES nhóm theo TABLE_SCHEMA, lấy MAX(CREATE_TIME) làm đại diện cho ngày tạo database.
Truy vấn
SELECT
TABLE_SCHEMA AS ALL_DATABASE_NAME,
MAX(CREATE_TIME) AS creationTime,
MAX(UPDATE_TIME) AS updatingTime
FROM INFORMATION_SCHEMA.TABLES
GROUP BY ALL_DATABASE_NAME
ORDER BY creationTime DESC;
Kết quả mẫu
+---------------------+---------------------+---------------------+ | ALL_DATABASE_NAME | creationTime | updatingTime | +---------------------+---------------------+---------------------+ | test | 2019-04-03 11:37:58 | 2019-04-03 11:38:55 | | hb_student_tracker | 2019-03-19 03:54:32 | NULL | | sample | 2019-03-15 00:04:29 | 2019-03-08 16:06:09 | | test3 | 2019-03-12 20:29:12 | NULL | | mysql | 2019-02-26 07:10:49 | 2019-04-03 11:38:56 | | ... | ... | ... | +---------------------+---------------------+---------------------+
Giải thích
TABLE_SCHEMA= tên databaseCREATE_TIMEcủa bảng = thời gian tạo bảngMAX(CREATE_TIME)= bảng tạo sớm nhất trong database ≈ ngày tạo databaseUPDATE_TIME= lần cuối bảng bị sửa (NULL cho InnoDB)- Database hệ thống (mysql, information_schema, performance_schema, sys) có CREATE_TIME rất sớm
Lưu ý
- Không có cột "database create time" trực tiếp trong MySQL
- Phương pháp này ước lượng dựa trên bảng cũ nhất
- Nếu xóa bảng cũ nhất, kết quả không chính xác
- MySQL 8.0: Có thể dùng
INFORMATION_SCHEMA.SCHEMATAnhưng cũng không có create_time
Cách khác: Xem thư mục data
-- Trên Linux ls -lt /var/lib/mysql/ | grep ^d -- Trên Windows dir /od "C:\ProgramData\MySQL\MySQL Server 8.0\Data\"
Thư mục database tạo sớm nhất = database cũ nhất.