MySQL 数据库元数据查询管理 - 示例
在 MySQL 中,可以通过 INFORMATION_SCHEMA 数据库和 SHOW 命令来查询用户、数据库、模式(schema)、表、表结构、视图等数据库对象的元数据信息。以下是一些常用的查询示例:
查询用户信息
查询所有用户:
1
SELECT User, Host FROM mysql.user;
查询用户的权限:
1
SHOW GRANTS FOR 'your_username'@'your_host';
查询用户的详细信息:
1
SELECT * FROM mysql.user WHERE User = 'your_username' AND Host = 'your_host';
查询数据库信息
查询所有数据库:
1
2
3
4
5
6
7
8SHOW DATABASES;
SELECT * FROM information_schema.schemata WHERE schema_name NOT IN (
'mysql',
'information_schema',
'performance_schema',
'sys'
);查询特定数据库的信息:
1
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'your_database_name';
查询模式(Schema)信息
在 MySQL 中,“模式” 通常指的是 “数据库”。因此,查询模式信息与查询数据库信息相同。
查询所有模式(数据库):
1
2
3
4
5
6
7
8SHOW DATABASES;
SELECT * FROM information_schema.schemata WHERE schema_name NOT IN (
'mysql',
'information_schema',
'performance_schema',
'sys'
);查询特定模式(数据库)的信息:
1
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'your_database_name';
查询表信息
查询当前数据库中的所有表:
1
SHOW TABLES;
查询特定数据库中的所有表:
1
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name';
查询特定表的信息:
1
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
查询表结构
查询表的所有列:
1
2
3SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE, COLUMN_DEFAULT, EXTRA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';查询表的主键:
1
2
3SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND CONSTRAINT_NAME = 'PRIMARY';查询表的外键:
1
2
3SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND REFERENCED_TABLE_NAME IS NOT NULL;查询表的索引:
1
2
3SELECT INDEX_NAME, COLUMN_NAME, NON_UNIQUE, SEQ_IN_INDEX
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';查询表的创建语句:
1
SHOW CREATE TABLE your_table_name;
查询视图信息
查询当前数据库中的所有视图:
1
SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
查询特定数据库中的所有视图:
1
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'your_database_name';
查询特定视图的信息:
1
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_view_name';
查询视图的定义:
1
SHOW CREATE VIEW your_view_name;
查询其他数据库对象
查询存储过程和函数:
1
2
3SELECT ROUTINE_NAME, ROUTINE_TYPE, DEFINER, CREATED, LAST_ALTERED, SQL_MODE, SECURITY_TYPE, CHARACTER_SET_CLIENT, COLLATION_CONNECTION, DATABASE_COLLATION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'your_database_name';查询触发器:
1
2
3SELECT TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE, ACTION_STATEMENT, ACTION_TIMING, CREATED, SQL_MODE, DEFINER
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA = 'your_database_name';查询事件调度器:
1
2
3SELECT EVENT_NAME, EVENT_TYPE, INTERVAL_VALUE, INTERVAL_FIELD, STARTS, ENDS, STATUS, ON_COMPLETION, CREATED, LAST_ALTERED, LAST_EXECUTED, SQL_MODE, COMMENT
FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_SCHEMA = 'your_database_name';
通过这些查询,你可以获取到关于用户、数据库、模式、表、表结构、视图以及其他数据库对象的详细元数据信息。根据你的具体需求,可以选择合适的查询来获取所需的信息。如果你需要更具体的查询或操作,请提供更多详细信息,我可以提供更具体的示例。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 思学!
评论
GiscusGitalk






