MySQL查看视图

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客

《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

查看视图是查看数据库中已存在的视图的定义。查看视图必须要有SHOW VIEW权限,MySQL数据库下的user表中保存着这个信息。查看视图的方法包括DESCRIBE、SHOW TABLE STATUS和SHOW CREATE VIEW,本节将介绍查看视图的各种方法。

9.3.1 使用DESCRIBE语句查看视图基本信息

DESCRIBE可以用来查看视图,具体的语法如下:

复制代码
DESCRIBE 视图名;

【例9.4】通过DESCRIBE语句查看视图view_t的定义,SQL语句如下:

复制代码
DESCRIBE view_t;

语句执行结果如下:

复制代码
mysql> DESCRIBE view_t;
+-----------------+------------+------+-----+---------+-------+
| Field           | Type       | Null | Key | Default | Extra |
+-----------------+------------+------+-----+---------+-------+
| quantity        | int        | YES  |     | NULL    |       |
| price           | int        | YES  |     | NULL    |       |
| quantity *price | bigint(21) | YES  |     | NULL    |       |
+-----------------+------------+------+-----+---------+-------+

结果显示出了视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外信息。

DESCRIBE一般情况下都简写成DESC,DESC命令的执行结果和DESCRIBE命令的执行结果是一样的。

9.3.2 使用SHOW TABLE STATUS语句查看视图基本信息

查看视图的信息也可以通过SHOW TABLE STATUS语句完成,具体的语法如下:

复制代码
SHOW TABLE STATUS LIKE '视图名';

【例9.5】使用SHOW TABLE STATUS命令查看视图信息,SQL语句如下:

复制代码
SHOW TABLE STATUS LIKE 'view_t' \G

语句执行结果如下:

复制代码
mysql> SHOW TABLE STATUS LIKE 'view_t' \G
*************************** 1. row ***************************
           Name: view_t
         Engine: NULL
        Version: NULL
     Row_format: NULL
           Rows: NULL
 Avg_row_length: NULL
    Data_length: NULL
Max_data_length: NULL
   Index_length: NULL
      Data_free: NULL
 Auto_increment: NULL
    Create_time: 2027-07-25 09:06:24
    Update_time: NULL
     Check_time: NULL
      Collation: NULL
       Checksum: NULL
 Create_options: NULL
        Comment: VIEW

执行结果显示,表的Comment的值为VIEW,说明该表为视图;其他的信息为NULL,说明这是一张虚表。

用同样的语句来查看一下数据表tv的信息,执行结果如下:

复制代码
mysql> SHOW TABLE STATUS LIKE 'tv' \G
*************************** 1. row ***************************
           Name: tv
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 1
 Avg_row_length: 16384
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2024-03-17 09:05:49
    Update_time: 2024-03-17 09:05:56
     Check_time: NULL
      Collation: utf8mb4_0900_ai_ci
       Checksum: NULL
 Create_options:
        Comment:

从查询的结果来看,这里的信息包含了存储引擎、创建时间等,并且Comment信息为空。这就是视图和表的区别。

9.3.3 使用SHOW CREATE VIEW语句查看视图详细信息

使用SHOW CREATE VIEW语句可以查看视图详细定义,语法如下:

复制代码
SHOW CREATE VIEW 视图名;

【例9.6】使用SHOW CREATE VIEW查看视图的详细定义,SQL语句如下:

复制代码
SHOW CREATE VIEW view_t \G

语句执行结果如下:

复制代码
mysql> SHOW CREATE VIEW view_t \G
*************************** 1. row ***************************
                View: view_t
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_t` AS select `tv`.`quantity` AS `quantity`,`tv`.`price` AS `price`,(`tv`.`quantity` * `tv`.`price`) AS `quantity *price` from `tv`
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci

执行结果中显示了视图的名称、创建视图的语句等信息。

9.3.4 在views表中查看视图详细信息

在MySQL中,information_schema数据库下的views表中存储了所有视图的定义。通过对views表进行查询,可以查看数据库中所有视图的详细信息,查询语句如下:

复制代码
SELECT * FROM information_schema.views;

【例9.7】在views表中查看视图的详细定义,SQL语句如下:

复制代码
mysql> SELECT * FROM information_schema.views\G
*** 1. row ***
       TABLE_CATALOG: def
        TABLE_SCHEMA: chapter11db
          TABLE_NAME: stu_glass
     VIEW_DEFINITION: select `chapter11db`.`student`.`s_id` AS `id`,`chapter11db`.`student`.`name` AS `name`,`
chapter11db`.`stu_info`.`glass` AS `glass` from `chapter11db`.`student` join `chapter11db`.`stu_info` where (`
chapter11db`.`student`.`s_id` = `chapter11db`.`stu_info`.`s_id`)
        CHECK_OPTION: NONE
        IS_UPDATABLE: YES
             DEFINER: root@localhost
       SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: gbk
COLLATION_CONNECTION: gbk_chinese_ci
*** 2. row ***
       TABLE_CATALOG: def
        TABLE_SCHEMA: chapter11db
          TABLE_NAME: view_t
     VIEW_DEFINITION: select `chapter11db`.`t`.`quantity` AS `quantity`,`chapter11db`.`t`.`price` AS `price`,(
`chapter11db`.`t`.`quantity` * `chapter11db`.`t`.`price`) AS `quantity *price` from `chapter11db`.`t`
        CHECK_OPTION: NONE
        IS_UPDATABLE: YES
             DEFINER: root@localhost
       SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: gbk
COLLATION_CONNECTION: gbk_chinese_ci
*** 3. row ***
       TABLE_CATALOG: def
        TABLE_SCHEMA: chapter11db
          TABLE_NAME: view_t2
     VIEW_DEFINITION: select `chapter11db`.`t`.`quantity` AS `qty`,`chapter11db`.`t`.`price` AS `price`,(`chap
ter11db`.`t`.`quantity` * `chapter11db`.`t`.`price`) AS `total` from `chapter11db`.`t`
        CHECK_OPTION: NONE
        IS_UPDATABLE: YES
             DEFINER: root@localhost
       SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: gbk
COLLATION_CONNECTION: gbk_chinese_ci
3 rows in set (0.03 sec)

查询的结果中显示了当前已经定义的所有视图的详细信息,包括前面定义的3个名称为"stu_glass""view_t"和"view_t2"的视图的详细信息。

相关推荐
Decay__6 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
驰骋工作流9 小时前
流程时效考核的表结构:从待办时限到 WF_CH 考核结果驰骋BPM驰骋低代码低代码工作流引擎
android·低代码·rxjava
小徐不徐说10 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
传奇开心果编程11 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
论文复现现场11 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__12 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁13 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk14 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW14 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
方白羽14 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app