SQL之视图———学习笔记

视图指来源于一个或多个表(或视图),将表中数据筛选映射后展现出来的一种结构,并且随原表(或原视图)中数据改变而改变。

使用视图:

1)提高数据访问的安全性:可以只展示表中所需数据,将其他数据进行隐藏。

2)方便复杂的查询操作:视图可以基于多表连接,整合数据方便。

SQL创建视图语句

CREATE VIEW view_name [ column1_name [,column2_name ] … ]

AS subquery(子查询语句)

示例

emp表包含e_id, e_name, d_id, sex, age, dept, job, salary等属性

dept表包含d_id, d_name等属性

1 基于单表

CREATE VIEW view_emp

AS

SELECT e_id,e_name,sex,age,dept

FROM emp;

2 基于多表

CREATE VIEW view2_emp

AS

SELECT e.e_id, e.d_id, e.e_name, d.d_id, d.d_name

FROM emp e, dept d

WHERE e.d_id=d.d_id;

3 基于函数、分组数据

CREATE VIEW view_emp_sal

AS
SELECT dept, job, MAX(salary) maxsalary

FROM emp

GROUP BY dept, job

HAVING MAX(salary) > 4000

4 基于视图

要查询学生成绩中最高分在90分以上的学生信息

(1) 使用普通SQL语句

SELECT s.stu_id, s.cur_id, s.cur_name, MAX(s.result)

FROM (

SELECT re.stu_id, cu.cur_id, cu.cur_name, re.result

FROM result re, curriculum cu

WHERE re.cur_id = cu.cur_id

) s

GROUP BY s.stu_id

HAVING MAX(s.result) >= 90

(2) 使用视图

CREATE VIEW view2_result

AS

SELECT stu_id, cur_id, cur_name, MAX(result)

FROM view_result

GROUP BY stu_id

HAVING MAX(result) >= 90

上述SQL语句中,view_result表示成绩信息的视图

 

在视图中添加CHECK约束

在视图中执行插入、修改和删除等更新语句时,会对数据做条件检查

语法:

CREATE VIEW view_name [ column1_name [,column2_name ] … ]

AS subquery

WITH CHECK OPTION

示例

CREATE VIEW view_emp_dept

AS

SELECT e_id, e_name, sex, age, job

FROM emp

WHERE job=”teacher” //条件检查

WITH CHECK OPTION //添加CHECK约束条件

你可能感兴趣的:(SQL之视图———学习笔记)