一、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算法效率低,但创建临时表之后、并在完成语句处理之前,能够释放基表上的锁定,使用视图的其他客户端不会被屏蔽过长时间。