在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。(虚表)
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
示例:
CREATE VIEW male_student AS SELECT name, age, gender FROM student WHERE gender = 'male' WITH CHECK OPTION;
在male_student视图中添加【WITH CHECK OPTION】的作用是在今后对视图male_student进行【DML - INSERT、UPDATE、DELETE】操作时保证【子查询中条件表达式的存在】eg: WHERE gender = ' male'
CREATE VIEW语句只是将视图的定义存入数据字典中不会执行SELECT语句,因为视图相当于一个桥梁,对视图查询时才会通过这个桥梁到指定的基本表中检索数据。
创建具有CHECK OPTION约束的视图
语法如下:
CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
AS subquery
[WITHCHECKOPTION];
其中:WITH CHECK OPTION短语表示,通过视图所做的修改,必须在视图的可见范围内:
假设INSERT,新增的记录在视图仍可查看
假设UPDATE,修改后的结果必须能通过视图查看到
假设DELETE,只能删除现有视图里能查到的记录
创建带有CHECK OPTION约束的视图:
CREATE OR REPLACE VIEW v_emp_10
AS
SELECT empno id, ename name, sal salary, deptno
FROM emp
WHERE deptno = 10
WITH CHECK OPTION;
下述DML语句操作失败,因为部门20不在视图可见范围内:
INSERT INTO v_emp_10 VALUES(1008,‘donna’,5500, 20);
UPDATE v_emp_10 SET deptno = 20 WHERE id = 7782;