目录
查看视图
查看视图的语句有很多,例如,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 STATUS 【FROM 数据库名】【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. 描述; 形容; | 描述 |
如有错误敬请高人指点,书写的易读性可否,希望大家多提意见。