查看视图

查看视图的语句有很多,例如,SHOW TABLES、SHOW TABLE STATUS、SHOW CREATE VIEW等。

SHOW TABLES 语句查看视图名

从MySQL 5.1 版本开始,实行 SHOW TABLES 语句时不仅会显示表的名字,同时也会显示视图的名字。
使用 SHOW TABLES 语句前必须指定数据库名称,即进入数据库 (USE 数据库名)

例: 首先选择进入数据库 view ,然后查看该数据库中所有表名和视图名。

注: 数据库 view 是我们在上一篇【视图的操作一】建立的

mysql> #选择数据库#
mysql> USE view;
Database changed
mysql> #查看数据库中视图及表的列表#
mysql> SHOW TABLES;
+--------------------+
| Tables_in_view     |
+--------------------+
| select_price       |
| t_group            |
| t_product          |
| t_student          |
| view_selectproduct |
| view_test1         |
| view_test2         |
| view_test3         |
| view_test4         |
| view_test6         |
| view_test7         |
+--------------------+
11 rows in set (0.00 sec)

SHOW TABLE STATUS 语句查看视图的详细信息

该语句同样不仅会显示表的详细信息,同时也会显示视图的详细信息。

语法形式:

SHOW TABLE STATUSFROM 数据库名】【LIKE 'pattern'

【FROM 数据库名】:指定数据库名 如果没有该参数,需用 USE 语句进入需要查看的数据库
【LIKE ‘pattern’】:指定表或者视图 如果没有该参数 则查看的是指定数据库(FROM 数据库名)或当前使用的数据库(USE 数据库名)中所有表和视图的详细信息

注: 因为该语句存在指定数据库名的参数,所以使用前可以不用 ‘use 数据库名’ 语句。

例1: 查看数据库 view 中所有表和视图的详细信息

mysql> #查看数据库中视图及表的详细信息#
mysql> SHOW TABLE STATUS
    ->  FROM view \G
*************************** 1. row ***************************
           Name: select_price
         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-05-03 22:45:35
    Update_time: NULL
     Check_time: NULL
      Collation: NULL
       Checksum: NULL
 Create_options: NULL
        Comment: VIEW
*************************** 2. row ***************************
           Name: t_group
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 5
 Avg_row_length: 3276
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2022-05-12 19:28:36
    Update_time: 2022-05-12 19:33:15
     Check_time: NULL
      Collation: gbk_chinese_ci
       Checksum: NULL
 Create_options:
        Comment:
*************************** 3. row ***************************

实际上执行以上语句后,结果中还有其他表和视图的详细信息,这里只截取前两个。
学过上一篇的,应该知道,第一个 select_price 是视图,第二个 t_goup 是个表

详细信息字段含义如下

字段名含义
Name表和视图的名
Engine表的仔储引擎(在 MysQL4.1.2 之前,用Type 表示)
Version表的.frm 文件的版本号
Row_format表的行存储格式
Rows表中行的数
Avg row _length表中行平均行长度
Data_length表数据文件的长度
Max_data_ length表数据文件的最大长度
Index_length表索引文件的长度
Data_free表被整序后,但是未使用的字节的数目
Auto_increment表中下一个AUTO_INCREMENT 值
Create_time表的创建时间
Update_time表的最后一次更新时间
Check_time表的最后一次检查时间
Collation表的字符集
Checksum表的活性校验
Create_options表的额外选项
Comment表的注解

例2: 显示数据库中某一个视图的详细信息

mysql> #查看 view 数据库中view_selectproduct视图的详细信息#
mysql> SHOW TABLE STATUS
    ->  FROM view
    ->      LIKE "view_selectproduct" \G
*************************** 1. row ***************************
           Name: view_selectproduct
         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-04-28 18:19:49
    Update_time: NULL
     Check_time: NULL
      Collation: NULL
       Checksum: NULL
 Create_options: NULL
        Comment: VIEW
1 row in set (0.00 sec)

数据库用 FROM 来指定,表或者视图用 LIKE 来指定
注: LIKE 后面所指定的视图或者表应该用英文的单引号 ‘’ 或双引号 ""来修饰

SHOW CREATE VIEW 语句查看视图定义信息

语法形式

SHOW CREATE VIEW 视图名称

例1 查看视图 select_price 的定义信息

mysql> #首先进入数据库 view 中#
mysql> USE view;
Database changed
mysql> #查看 view 数据库中 select_price 视图的定义信息#
mysql> SHOW CREATE VIEW select_price \G
*************************** 1. row ***************************
                View: select_price
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL
SECURITY DEFINER VIEW `select_price` AS select `t_product`.`name` AS `name`,`t_p
roduct`.`price` AS `price` from `t_product`
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.01 sec)

从结果中可以发现 SHOW CREATE VIEW 语句返回两个字段,分别表示视图名的 View 字段和关于视图定义的“Create view ”字段。

例2 看到这里我们可以再延伸一下,用 SHOW CREATE TABLE 语句查看表的定义信息
查看表 t_group 的定义信息

mysql> #首先进入数据库 view 中#
mysql> USE view;
Database changed

mysql> # 查看表 t_group 的定义信息#
mysql> SHOW CREATE TABLE t_group \G
*************************** 1. row ***************************
       Table: t_group
Create Table: CREATE TABLE `t_group` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)

从结果中可以发现 SHOW CREATE TABLE 语句返回两个字段,分别表示表名的 View 字段和关于表定义的“Create Table ”字段。

DESCRIBE | DESC 语句查看视图设计信息

语法形式

DESCRIBE | DESC 视图名称

例1: 查看视图的设计信息

mysql> #首先进入数据库 view 中#
mysql> USE view;
Database changed

mysql> #查看视图 select_price 设计信息#
mysql> DESCRIBE select_price;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(20) | YES  |     | NULL    |       |
| price | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

例2 查看表的设计信息
用同样的语句,可以查看表的设计信息

mysql> #首先进入数据库 view 中#
mysql> USE view;
Database changed

mysql> #查看表 t_group 设计信息#
mysql> DESC t_group;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

DESC 语句是 DESCRIBE 语句的缩写,从上面两个例子的运行效果中可以看出,关键字 DESCRIBE 与 DESC 的执行效果是一样的。

通过系统表查看视图信息

当 MySQL 数据库安装成功后,会自动创建系统数据库 information_schema。在该数据库中存在一个包含视图信息的表格 views,可以通过查看表格 views 来查看所有视图的相关信息。
如下图所示:

mysql> #查看所有数据库名录#
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| company            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| view               |
+--------------------+
6 rows in set (0.00 sec)

mysql> #进入 information_schema 数据库中#
mysql> USE information_schema;
Database changed

mysql> #查看其包含的所有表#
mysql> SHOW TABLES;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| ADMINISTRABLE_ROLE_AUTHORIZATIONS     |
| APPLICABLE_ROLES                      |
| CHARACTER_SETS                        |
| CHECK_CONSTRAINTS                     |
|                ………… 略                |
| VIEWS                                 |
+---------------------------------------+
79 rows in set (0.01 sec)

数据库 information_schema 中存在名为 VIEWS 的表。

例: 通过查看系统表 information_schema 来查看视图对象 view_selectproduct 相关信息。

mysql> #进入 information_schema 数据库中#
mysql> USE information_schema;
Database changed

mysql> #查看表数据#
mysql> SELECT *
    ->  FROM views
    ->      WHERE table_name='view_selectproduct' \G
*************************** 1. row ***************************
       TABLE_CATALOG: def
        TABLE_SCHEMA: view
          TABLE_NAME: view_selectproduct
     VIEW_DEFINITION: select `view`.`t_product`.`id` AS `id`,`view`.`t_product`.
`name` AS `name` from `view`.`t_product`
        CHECK_OPTION: NONE
        IS_UPDATABLE: YES
             DEFINER: root@localhost
       SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
1 row in set (0.01 sec)

生词表

单词读音译文MySQL
status英 [ˈsteɪtəs]n.地位;状态;身份;职位;……详细信息
pattern英 [ˈpætn]n.图案;模式;方式; ……指定具体的某一个部分
describe英[dɪˈskraɪb]vt. 描述; 形容;描述

如有错误敬请高人指点,书写的易读性可否,希望大家多提意见。

上一篇【视图的操作一】
下一篇【视图的操作三】

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐