mysql建立视图 包含约束_MySQL学习笔记 - 视图

本文介绍了数据库视图的概念及其在提高数据访问安全性和简化复杂查询方面的应用。通过具体实例展示了如何创建视图,并讨论了在视图中添加CHECK约束的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

使用视图:

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约束条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值