首页 > 编程笔记 > MySQL笔记 阅读:13

MySQL查看视图的4种方法(附带实例)

查看视图是查看数据库中已存在的视图的定义。查看视图必须要有 SHOW VIEW 的权限,MySQL 数据库下的 user 表中保存着这个信息。

MySQL 中查看视图的方法包括 DESCRIBE、SHOW TABLE STATUS 和 SHOW CREATE VIEW,还可以在 views 表中查看视图的详细信息。

用DESCRIBE语句查看视图

DESCRIBE 可以用来查看视图,具体的语法如下:
DESCRIBE 视图名;
【实例】通过 DESCRIBE 语句查看视图 view_t 的定义,代码如下:
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,输入这个命令的执行结果和输入 DESCRIBE 的执行结果是一样的。

用SHOW TABLE STATUS语句查看视图

查看视图的信息可以通过 SHOW TABLE STATUS 的方法完成,具体的语法如下:
SHOW TABLE STATUS LIKE '视图名';
【实例】使用 SHOW TABLE STATUS 命令查看视图信息,代码如下:
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: 2022-03-17 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: 2022-03-17 09:05:49
   Update_time: 2022-03-17 09:05:56
    Check_time: NULL
     Collation: utf8mb4_0900_ai_ci
     Checksum: NULL
Create_options:
      Comment:
从查询的结果来看,这里的信息包含了存储引擎、创建时间等,Comment 信息为空,这就是视图和表的区别。

用SHOW CREATE VIEW语句查看视图

使用 SHOW CREATE VIEW 语句可以查看视图的详细定义,语法如下:
SHOW CREATE VIEW 视图名;
【实例】使用 SHOW CREATE VIEW 查看视图的详细定义,代码如下:
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

在views表中查看视图

在 MySQL 中,information_schema 数据库的 views 表中存储了所有视图的定义。通过对 views 表的查询,可以查看数据库中所有视图的详细信息,查询语句如下:
SELECT * FROM information_schema.views;
【实例】在 views 表中查看视图的详细定义,代码如下:
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`, (`chapter11db`.`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 视图的详细信息。

相关文章