视图的含义以及功能
含义:虚拟表,和普通表一样使用
mysql5.1版本出现的新特性,是通过表动态生成的数据
(可以理解成就是将生成的表临时保存起来下一次如果要用就直接用这个虚拟表就好了)
功能
1.重用sql语句
2.简化负责的sql操作,不必知道它的查询细节
3.保护数据,提高安全性
视图的相关操作
创建视图的语法
语法:
vreate view 视图名
as
查询语句
简单的案例
#案例 查询张某的专业
CREATE VIEW v1
AS
SELECT stuname, majorname
FROM stuinfo s
INNER JOIN major m ON s.majorid = m.id;
SELECT * FROM v1 WHERE stuname LIKE '张%';
#案例 查询姓名中包含a字符的员工名、部门名和工种信息
#①创建
CREATE VIEW myv1
AS
SELECT last_name, department_name, job_title
FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN jobs j ON j.job_id = e.job_id;
#②使用
SELECT * FROM myv1 WHERE last_name LIKE '%a%';
#案例:查询各部门的平均工资级别
#创建视图查看每个部门的平均工资
CREATE VIEW myv2
AS
SELECT AVG(salary) ag, department_id
FROM employees
GROUP BY department_id;
#②使用
SELECT myv2.ag, g.grade_level
FROM myv2
JOIN job_grades g
ON myv2.ag BETWEEN g.lowest_sal AND g.highest_sal;
#查询平均工资最低的部门信息
SELECT * FROM myv2 ORDER BY ag LIMIT 1;
#查询平均工资最低的部门名字和工资
CREATE VIEW myv3
AS
SELECT * FROM myv2 ORDER BY ag LIMIT 1;
SELECT d.*, m.ag
FROM myv3 m
JOIN departments d
ON m.department_id = d.department_id;
视图的修改
#方式一:
create or replace view 视图名 #如果视图存在则修改,如果不存在就创建
as
查询语句
方式二
alter view 视图名
as
查询语句
视图的删除
语法:drop view 视图名,视图名…
视图的更新
一旦具备一下特点的视图是不允许被更新的
①包含一下关键字的sql语句:分组函数、distinct,group by, having,union或者union all
②常量视图
③select中包含子查询
④join
⑤from一个不能更新的视图(就是创建视图的时候from了一个不可更新的视图,辣么创建的视图也不可以更新)
⑤where字句的子查询引用了from字句中的表
CREATE OR REPLACE VIEW myv1
AS
SELECT last_name, email
FROM employees;
SELECT * FROM myv1;
#1.插入
INSERT INTO myv1 VALUES('张飞','zf@qq.com');
#2.修改
UPDATE myv1 SET last_name = '张无忌' WHERE last_name = '张飞';
#3.删除
DELETE FROM myv1 WHERE last_name = '张无忌';