目录
1、常见的数据库对象
2、试图概述 
2.1 为什么使用视图?
2.2 视图的理解
对视图进行操作,会同时把原表的数据也进行修改。因此,视图是一张虚拟表,本质就类似于一个SELECT语句,因此,删除视图就类似删除SELECT,因此不会影响原图
3、创建视图
3.1 针对单表
举例:
准备工作:
CREATE DATABASE dbtest14;
USE dbtest14;
CREATE TABLE emps AS SELECT * FROM atguigudb.employees; //复制employees表
CREATE TABLE depts AS SELECT * FROM atguigudb.departments; //复制departments表
SELECT * FROM emps;//查看表
SELECT * FROM depts;
DESC emps;//查看约束
针对于单表:
#情况1:视图中的字段和基表的字段有对应关系
CREATE VIEW vu_emp1 AS SELECT employee_id,last_name,salary FROM emps;
SLECT * FROM vu_emp1;
#确定视图中字段名的方式1
CREATE VIEW vu_emp2 AS SELECT employee_id emp_id,last_name lname,salary FROM emps WHERE salary>8000; //查询语句中字段的别名会作为视图中的字段的名称出现
#确定视图中字段名的方式2
CREATE VIEW vu_emp3(emp_id,NAME,monthly_sal) //小括号内字段个数和SELCET中字段个数相同
AS SELECT employee_id,last_name lname,salary FROM emps WHERE salary>8000;
SLECT * FROM vu_emp3;
#情况2:视图中的字段在基表中可能没有对应的字段,可能是使用函数产生的字段等
CREATE VIEW vu_emp_sal AS SELECT department_id,AVG(salary) avg_sal FROM emps WHERE department_id IS NOT NULL GROUP BY department_id;
3.2 针对于多表
CREATE VIEW vu_emp_dept AS //后写的VIEW语句,因此可以看出VIEW就是隐藏的SELECT语句
SELECT e.employee_id,e.department_id,d.department_name FROM emps e JOIN depts d ON e.department_id=d.department_id;
#利用视图对数据进行格式化(设置指定格式)
3.3 基于视图创建视图
4、查看视图
用上述例子举例:
5、更新(增删改)视图中的数据
更改:
删除:
可见对视图的修改可以也会更改表里的数据,而对表里数据的修改也会该更改视图。
5.2 不能更新视图中的数据情况
针对于情况2:视图中的字段在基表中可能没有对应的字段,可能是使用函数产生的字段等
如果更改了平均工资以后,那么对于30号部门的每个人的工资是无法分配的,因此不能跟新视图中的平均工资。 (删除同理)
6、修改、删除视图
6.1 修改视图
6.2 修改视图
7、总结
7.1 视图优点
7.2 视图的不足