TreeviewCopyright © qgao 2021-* all right reserved, powered by aleen42
视图
https://blog.csdn.net/kxbarcode/article/details/81660934
定义
视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。
说白了,视图就是一条select语句。
根据视图所对应的子查询种类分为几种类型:
- 简单视图:SELECT语句是基于单表建立的,且不包含任何函数运算、表达式或分组函数,此时视图是基表的子集;
- 复杂视图:SELECT语句同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY子句;
- 连接视图:SELECT语句是基于多个表的。
语法
创建一个简单视图V_EMP_10,来显示部门10中的员工的编码、姓名和薪水:
CREATE VIEW v_emp_10 [alias]
AS
SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno = 10;
查看视图结构:
DESC v_emp_10;
查询视图和查询表的操作相同:
SELECT * FROM v_emp_10; #此时视图的列名,和创建视图时的列名一致,
视图的作用
简化复杂查询:如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可;
限制数据访问:视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用。
对视图进行更新操作(INSERT或UPDATE)
简单视图能够执行DML操作,除了:
- 在基表中定义了非空列,但简单视图对应的SELECT语句并没有包含这个非空列,导致这个非空列对视图不可见;
- 如果视图定义中包含了函数、表达式、分组语句、DISTINCT关键字或ROWNUM伪列;
- 违反基表的约束条件。
# 简单视图可以通过DML操作影响到基表数据。
INSERT INTO v_emp_10
VALUES(1234, ‘DOCTOR’, 4000, 10);