一:视图的创建
#视图:/*含义:虚拟表,和普通表一样使用mysql5.1版本出现的新特性,是通过表动态生成的数据应用场景:多个地方用到同样的查询结果该查询结果使用的sql语句较复杂*/#案例:查询姓张的学生名和专业名CREATE VIEW v1ASSELECT stuname,majornameFROM stuinfo sINNER JOIN major mON s.majorid=m.idWHERE s.stuname LIKE '张%';SELECT * FROM v1 WHERE stuname LIKE '张%';#一:创建视图/*语法:create view 试图名as查询语句*/#案例一:查询姓名中包含a字符的员工名、部门名和工种信息#(1)创建CREATE VIEW myv1ASSELECT last_name,department_name,job_titleFROM employees eJOIN departments dON e.department_id = d.department_idJOIN jobs jON j.job_id = e.job_id;#(2)使用SELECT *FROM myv1WHERE last_name LIKE '%a%';/*视图的好处:重用sql语句简化复杂的sql操作,不必知道它的细节保护数据,提高安全性*/
二;视图的修改
#二:视图的修改#方式一:/*create or replace view 视图名as查询语句;含义:如果存在则修改,不存在则创建*/CREATE OR REPLACE VIEW myv1ASSELECT AVG(salary),job_idFROM employeesGROUP BY job_id;#方式二:/*alter view 视图名as查询语句;*/ALTER VIEW myv1ASSELECT AVG(salary),job_idFROM employeesGROUP BY job_id;
三:视图的查看和删除
#三:查看视图/*语法:desc 视图名; #查看视图结构show create view 视图名;*/#四:删除视图/*语法:drop view 视图名,视图名,……*/
四:视图的更新
#五:视图的更新CREATE OR REPLACE VIEW myv1ASSELECT last_name,emailFROM employees;SELECT * FROM myv1;#1.插入INSERT INTO myv1 VALUES('周杰伦','zjl@qq.com');#2.修改UPDATE myv1 SET last_name = '方文山' WHERE last_name='周杰伦';#3.删除DELETE FROM myv1 WHERE last_name = '方文山';/*一般情况下视图是不允许更新的*/
视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的。
