当前位置: 首页 > article >正文

mysql 之 information_schema

information_schema 是 MySQL 中的一个特殊数据库,它提供了关于 MySQL 服务器中所有数据库、表、列、索引、存储过程、函数、触发器等对象的元数据信息。information_schema 是一个只读数据库,主要用于查询数据库的结构信息,而不是存储用户数据。

information_schema 的功能分析
1. 元数据查询
information_schema 主要用于查询数据库的元数据,包括但不限于:
数据库信息:列出所有数据库及其相关信息。
表信息:列出数据库中的所有表及其相关信息。
列信息:列出表中的所有列及其相关信息。
索引信息:列出表的所有索引及其相关信息。
存储过程和函数信息:列出数据库中的所有存储过程和函数及其相关信息。
视图信息:列出数据库中的所有视图及其相关信息。
用户权限信息:列出用户的权限信息。
2. 主要表介绍
以下是 information_schema 中一些主要表的功能介绍:
SCHEMATA:列出所有数据库的信息,包括数据库名、默认字符集和排序规则等。
TABLES:列出数据库中的所有表的信息,包括表名、表类型、创建选项等。
COLUMNS:列出表中的所有列的信息,包括列名、数据类型、是否允许空值、默认值等。
STATISTICS:列出表的所有索引的信息,包括索引名、索引类型、是否唯一等。
VIEWS:列出数据库中的所有视图的信息,包括视图定义等。
ROUTINES:列出数据库中的所有存储过程和函数的信息,包括过程或函数名、参数等。
USER_PRIVILEGES:列出用户的权限信息,包括用户可以执行的操作等。
3. 示例查询
以下是一些基本的查询示例,展示如何使用 information_schema:
列出所有数据库:

 SELECT schema_name
  FROM information_schema.SCHEMATA;

列出特定数据库中的所有表:(不带条件所有库中所有表)

  SELECT table_name
  FROM information_schema.TABLES
  WHERE table_schema = 'your_database_name';

列出特定表的所有列:

 SELECT column_name
  FROM information_schema.COLUMNS
  WHERE table_schema = 'your_database_name'
    AND table_name = 'your_table_name';

列出特定表的所有索引:

SELECT routine_name, routine_type
  FROM information_schema.ROUTINES
  WHERE routine_schema = 'your_database_name';

列出用户的权限:

  SELECT privilege_type
  FROM information_schema.USER_PRIVILEGES
  WHERE grantee = 'your_username';

为什么 information_schema 不能被删除或修改
只读特性:information_schema 是只读的,任何尝试修改或删除其内容的操作都会被 MySQL 阻止。
动态生成:information_schema 中的数据是动态生成的,不是物理存储的数据,而是从 MySQL 服务器内部状态中动态获取的数据视图。
系统重要性:information_schema 对于 MySQL 的正常运行至关重要,因此不允许用户直接修改或删除。
 

查看数据库所有表的table_rows/data_leangth/index_length


http://www.kler.cn/a/300800.html

相关文章:

  • DataGridView组件中显示的SQLite表中数据
  • 【MySQL】从0开始在Centos 7环境安装MySQL
  • 探索Python中文拼音转换的奥秘:xpinyin库
  • 【Java算法】递归
  • Windows 平台安装 Nacos 2.x
  • Django 模型索引的创建
  • requests-html的详细使用方法
  • Leetcode 3283. Maximum Number of Moves to Kill All Pawns
  • 富文本中去掉 HTML 和 CSS 样式,只保留纯文本
  • 【Unity踩坑】使用Input System后UI EventSystem的冲突
  • 中国书法—孙溟㠭篆刻《消失的心》
  • 41集 ESP32 LVGL屏幕显示AI对话代码流程分析
  • DPDK基础入门(十):虚拟化
  • 编码与实现
  • 【佳学基因检测】在MYSQL中,如何对相互关联的数据库进行更新?
  • 构建安全基石:反射API与代码注入防护的集成方案
  • STL-详细介绍list
  • 为什么最好把 CSS 的 link 标签放在 head 标签之间?
  • 安装node 报错需要:glibc >= 2.28
  • 结构体的字节对齐方式(__attribute_pack(packed))#pragma pack())