十三、视图 view

简介: 十三、视图 view

视图 view

视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。

但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

为啥需要使用视图

视图 view
(1)【安全性】保护了原表中数据的安全性,一部分比较敏感重要的数据不被暴露出去
(2)【简化SQL语句】从一定程度上,简化复杂的SQL语句

创建视图

CREATE VIEW 视图名(列1,列2...)
AS SELECT (列1,列2...)
FROM ...;

使用视图和使用表完全一样,只需要把视图当成一张表就OK了。视图是一张虚拟表。

删除视图

drop view 视图名;

视图与表数据变更

  1. 表数据变化后,在通过视图检索,得到的结果也同步发生了变化
  2. 可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。

WITH CHECK OPTION

如果在创建视图的时候制定了“WITH CHECK OPTION”,那么更新数据时不能插入或更新不符合视图限制条件的记录。

示例

-- 经常查询员工基本信息-- 1. 员工编号 姓名 职位 所在部门 手机号 邮箱create view emp_info_view
asselect e.empno employee_no,e.ename employee_name ,      job employee_job,d.dname depaerment_name
from emp e join dept d
on e.deptno= d.deptno-- 2. 统计各部门的薪资情况(子查询、分组、排序、函数--复杂的 、 频繁使用的sql )=== > 结果放在视图中-- 删除视图drop view emp_info_view;-- 删除原表中的记录,视图中的数据也删除deletefrom emp where empno =7934select*from emp_info_view
-- 创建视图:查询出30部门的所有员工信息,统计出总薪资create view emp_salary_view
asselect empno employee_no,       ename employee_name,       salary  employee_salary,       comm   employee_comm,       deptno department_no ,       salary + ifnull(comm,0) total_salary
from emp 
where deptno =30with check option
drop view emp_salary_view
-- (1)更新视图中 7900员工 comm 改为1000update emp_salary_view set employee_comm =1000where employee_no =7900原表中7900 数据有没有受影响?【有受影响】
select*from emp where empno =7900-- with check option 所有的对视图的操作,必须要满足视图中的where 条件update emp_salary_view set employee_comm =100where department_no=10
目录
相关文章
|
4月前
|
数据库 Python
视图(View)
【8月更文挑战第24天】
23 2
|
5月前
|
SQL 存储
第9章 视图view
第9章 视图view
35 0
|
7月前
|
SQL 前端开发 安全
视图的作用
视图的作用。
62 1
|
编解码 Android开发
视图 总结 基础
DragViewTaskRelease 使用FrameLayout布局(可以用其他的),内嵌imageView实现悬浮拖动和点击事件,继承View的ontouchEvent进行动作监听和移动 getX(),getY()等方法的区别(图解) BarPercentView 条形进度条(可设置 线性渐变-背景色-进度条颜色-进度条高度) 游戏下载进度条显示 zidingyiView矩形进度框,在构造函数里定义基础属性,初始化布局,定义俩个矩形,onMeasure获取宽高和onDraw方法显示
|
开发者 Python
对CBV视图的探究(1)数据显示视图
对CBV视图的探究(1)数据显示视图
78 0
|
前端开发 容器
View的测量、布局和绘制过程中父View(当前View)和子View的先后顺序
View的测量、布局和绘制过程中,到底是先测量(布局、绘制)父View,还是先测量子View,这篇文章会从源码角度给出答案。
调用View#requestLayout后,哪些View会被影响?
调用View#requestLayout后,哪些View会被影响?
|
缓存 Scala 开发者
视图(View) | 学习笔记
快速学习视图(View)
|
SQL 数据可视化 数据库