导图社区 视图
这是一篇关于视图的思维导图,主要内容有什么是视图、为什么使用视图、创建视图的格式、创建视图等。
这是一篇关于约束基础的思维导图,主要内容有约束、默认约束default、外键约束。
这是一篇关于索引基础的思维导图,主要内容有索引是数据库中用来提高查询效率的技术,类似于目录、因为索引会占用磁盘空间不是越多越好,只针对常用的查询字段创建索引、数据量小的表如果添加索引会降低查询效率,所以不是有索引就一定好等。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
视图
什么是视图
数据库中表和视图都是其内部的对象,视图可以理解成是一张虚拟的表,视图本质就是取代了一段sql查询语句
为什么使用视图
因为有些数据的查询需要书写大量的sql语句,每次书写开发效率太低,使用视图可以重用sql语句,可以隐藏敏感信息
创建视图的格式:
create view 视图名 as (子查询);
创建视图
create view v_emp_10 as (select * from emp where deptno=10);
-查询视图内的数据
select * from v_emp_10;
练习: 创建30号部门工资大于2000的视图 v_emp_30
create view v_emp_30 as (select * from emp where deptno=30 and sal>2000);
创建一个没有工资的员工表视图
create view v_emp_nosal as (select empno,ename,job,comm,hiredate,deptno from emp);
视图分类
简单视图
创建视图的子查询中不包含去重、分组查询、聚合函数、关联查询的视图称为简单视图,可以对视图中的数据进行增删改查操作
复杂视图
和简单视图相反,只能进行查询
创建显示每个部门工资总和,平均工资、最大工资、最小工资的复杂视图:
create view v_emp_info as (select deptno,sum(sal),avg(sal),max(sal),min(sal) from emp group by deptno);
对简单视图进行增删改操作,操作方式和table一样
插入数据
insert into v_emp_10(empno,ename) values(10011,‘Tom’);
insert into v_emp_10(empno,ename,deptno) values(10012,‘Jerry’,20);
以上两行都为数据污染
如果插入一条数据在原表中显示但是在视图中不显示,则称为数据污染
数据污染可以通过 with check option 关键字解决
create view v_emp_20 as (select * from emp where deptno=20) with check option; -插入数据
insert into v_emp_20 (empno,ename,deptno) values(10013,‘刘德华’,30); //插入数据失败 insert into v_emp_20 (empno,ename,deptno) values(10013,‘刘德华’,20); //插入数据成功!
-删除和修改数据 只能操作视图中存在的数据
delete from v_emp_20 where deptno=10; //没有数据被删除 update v_emp_20 set sal=666 where deptno=10;//没有数据被修改
修改视图
创建或替换,如果不存在则创建,如果存在则替换
create or replace view v_emp_20 as (select * from emp where deptno=20 and sal>2000);
删除视图
格式: drop view 视图名;
drop view v_emp_20;
视图别名
如果创建视图时的子查询使用了别名则视图操作时只能使用别名
create view v_emp_20 as (select ename name,sal from emp where deptno=20);
select ename from v_emp_20;//报错不认识ename
select name from v_emp_20; //执行成功
视图总结:
视图是数据库中的对象,代表一段sql语句,可以理解成是一张虚拟的表
作用:重用sql、隐藏敏感信息
分类:简单视图(不包含,去重、聚合函数、分组、关联查询 可以对数据进行增删改操作)和复杂视图(和简单视图相反,只能查询)
插入数据时可能会出现数据污染问题,通过with check option解决
删除和修改只能操作视图中存在的数据
起了别名后只能用别名
主题