MySQL原理---视图

113 阅读1分钟

一、view视图创建、使用

用来筛选,防止业务员看到敏感数据

创建一张学生姓名与电话的视图:

CREATE VIEW vw_stu AS
SELECT 
	name,phone 
FROM 
	student;
SELECT
	* 
FROM
	vw_stu;

请添加图片描述

创建一张学生姓名、电话与分数的视图:

CREATE VIEW vw_stu_all AS 
SELECT 
	name,phone,score 
FROM
	student INNER JOIN score ON 
	student.id=score.stuid;
SELECT
	* 
FROM
	vw_stu_all;

请添加图片描述



二、显示视图

创建视图时用(vw_)前缀进行区分

查看库中的视图表:

SHOW TABLES;

请添加图片描述

查看视图结构:

DESC vw_stu;

请添加图片描述

查看视图创建语句:

SHOW CREATE vw_stu;

请添加图片描述

查看库中所有视图的状态信息:

SHOW TABLE STATUS 
WHERE
	COMMENT = 'view' \ G;

请添加图片描述



三、更新和删除视图

更新 vw_stu_all 视图:

ALTER VIEW vw_stu_all AS 
SELECT 
	name
FROM
	student;

请添加图片描述

删除视图:

DROP VIEW vw_stu_all;


四、视图算法temptable,merge

创建视图时指定算法:

CREATE algorithm=TEMPTABLE VIEW vw_stu AS
SELECT 
	name,phone 
FROM 
	student;

MERGE合并算法:每当执行的时候,先将视图的sql语句与外部查询视图的sql语句,合并在一起,最终执行,这样操作对效率基本上没有什么影响。

TEMPTABLE临时表算法:是将结果放置到临时表中,意味这要mysql要先创建好一个临时表,然后将视图结果放到临时表中去,然后再使用这个临时表进行相应的查询。TEMPTABLE算法效率低,但创建临时表之后、并在完成语句处理之前,能够释放基表上的锁定,使用视图的其他客户端不会被屏蔽过长时间。