Mysql高级查询整理-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
INFORMATION_SCHEMA
INFORMATION_SCHEMA 是 MySQL 数据库系统中的一个特殊数据库它包含了关于数据库对象的元数据信息。通过查询 INFORMATION_SCHEMA可以获取有关数据库、表、列、索引、外键、用户权限等方面的信息。
以下是 INFORMATION_SCHEMA 中包含的一些常见信息
1. SCHEMATA
SCHEMATA 表包含了数据库实例中所有可用的数据库schema的信息如数据库名称、字符集、默认排序规则等。
2. TABLES
TABLES 表包含了数据库中的所有表的信息如表名、所属数据库、创建时间、表类型临时表、视图等等。
3. COLUMNS
COLUMNS 表包含了数据库中所有表的列信息如列名、所属表名、所属数据库、数据类型、是否为主键等。
4. STATISTICS
STATISTICS 表包含了数据库中表和索引的统计信息如索引名、索引类型、索引的列名和基数distinct key count等。
5. ROUTINES
ROUTINES 表包含了数据库中的存储过程和函数的信息如名称、定义的数据库、创建时间、参数信息等。
6. USER_PRIVILEGES
USER_PRIVILEGES 表包含了数据库用户及其权限的信息如用户名称、权限级别、权限类型等。
以上只是 INFORMATION_SCHEMA 中的一部分表还有其他诸如 KEY_COLUMN_USAGE、REFERENTIAL_CONSTRAINTS、VIEWS、TRIGGERS 等表用于存储关于键、外键、视图和触发器的信息等。
通过查询 INFORMATION_SCHEMA可以了解 MySQL 数据库的结构、元数据信息和权限等方面的内容这些信息对于数据库管理和查询优化等工作非常有用。
希望以上信息对你有所帮助如果还有其他问题请随时提问。
根据表名查找数据库名
SELECT TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'index_info';
查询数据库中所有的表
SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database';
查询特定表的列信息
SELECT column_name, data_type, column_type, is_nullable FROM information_schema.columns WHERE table_schema = 'your_database' AND table_name = 'your_table';
查询特定表的索引信息
SELECT index_name, column_name, non_unique FROM information_schema.statistics WHERE table_schema = 'your_database' AND table_name = 'your_table';
查询所有存储过程和函数
SELECT routine_name, routine_type FROM information_schema.routines WHERE routine_schema = 'your_database';
查询数据库用户及其权限
SELECT grantee, privilege_type FROM information_schema.user_privileges WHERE table_schema = 'your_database';
查询视图信息
SELECT table_name, view_definition FROM information_schema.views WHERE table_schema = 'your_database';
在上述查询语句中需要替换 'your_database' 为你实际的数据库名'your_table' 为表名或对象名等。
可以根据具体需求使用不同的查询条件和需要的字段来获取 INFORMATION_SCHEMA 中的信息。通过查询 INFORMATION_SCHEMA你可以获得数据库、表、列、索引、存储过程、用户权限等方面的详细信息。
其他的表
除了 INFORMATION_SCHEMAMySQL 还有一些其他特殊的表用于存储和管理特定的信息。以下是一些常见的特殊表
1. mysql.user
mysql.user 表存储了 MySQL 数据库的用户信息包括用户名、密码、权限等。
2. mysql.db
mysql.db 表存储了数据库级别的权限信息包括用户对各个数据库的权限授予情况。
3. mysql.tables_priv
mysql.tables_priv 表存储了表级别的权限信息包括用户对各个表的权限授予情况。
4. mysql.columns_priv
mysql.columns_priv 表存储了列级别的权限信息包括用户对各个列的权限授予情况。
这些特殊的表位于 MySQL 的系统数据库中这些数据库名为 mysql。这些表用于存储和管理用户、权限和安全相关的信息。
需要注意的是对于这些特殊的表一般来说不推荐直接向这些表进行插入、更新和删除等操作。建议使用 MySQL 提供的 GRANT 和 REVOKE 命令来管理用户和权限以确保数据的完整性和一致性。
希望以上信息对你有所帮助如果还有其他问题请随时提问。