SQL中: 视图
视图
视图的作用
- 简化用户的操作
- 使用户能以多种角度看待同一数据
- 对重构数据库提供了一定程度的逻辑独立性
- 对机密数据提供安全保护
- 适当利用视图可以更清晰地表达查询
视图的特点
-
虚表,从一个或几个基本表(或视图)导出的表
-
只存放视图的定义,不存放视图对应的数据
-
基本表数据改变, 视图中数据也会变化
例如:更新平均成绩,更新不了,不会影响原表数据
行列子集视图
视图是由单个d额基本表导出,并且去掉某些行和列,但保留了主码的视图
例如:
create view is_student
as
select sno,sname
from student
where sdept='IS'
with check option;
/*
with check option ,对where 条件子句检查, 如果更新或插入的数据不符合视图定义中的约束条件,则会出现错误提示。
在 DELETE 命令时,WITH CHECK OPTION 对其不起作用。
*/
分组视图
视图查询中,带有group by
建立视图
作用:方便老爷爷老奶奶使用
create view nihao1 (sno,sname,grade ) --视图名 (列名)
as
select *
from sc
where sno=1 --子查询
with check option
限定as 子查询条件
基于视图的视图
create view nihao2 (sno,sname,grade ) --视图名 (列名)
as
select *
from nihao1
where sno=1 --子查询
with check option
限定as 子查询条件
删除视图 / 删除视图数据
删除视图:
drop
view nihao cascade -- cascade 级联
删除视图中记录:
通过V_计算机系学生”视图,删除姓名为“白晓云”的记录
DELETE
FROM V_计算机系学生
WHERE sname='白晓云'
查询视图(insert/ update/ delete, select )
select
类似查询基本表
update
更新视图 不一定更新 基本表
更新基本表 一定更新视图
更新视图的条件:
视图必须只引用单个基本表(这意味着视图不能跨多个表)。
视图中的字段必须来自基本表的列,而不是计算字段或表达式。
视图必须包含基本表的主键(或至少是唯一键),以便可以准确定位要更新的行。
视图不能包含以下类型的操作:GROUP BY、DISTINCT、UNION、子查询、聚合函数等。
视图中不能包含 WITH CHECK OPTION 子句,该子句会限制对视图的更新。
更新视图的列的条件:
1. 视图必须只包含来自单个基本表的列。(如视图V_计算机系学生来自于student表,一个单表) 如果视图包含来自多个表的列,那么通常不能直接对视图进行更新。
2. 视图中的列必须是直接从基本表中选择的列(如修改视图V_计算机系学生,其中列来自于student基本表中的sname列),而不是通过计算、聚合或其他方式得出的结果。
3. 视图的基本表必须具有主键(student 表中有sno学号主键)
4. 视图的基本表必须是可更新的,这意味着它不能是临时表、全局临时表、表变量、联合查询的结果、包含计算列的表等。
5. 视图中的列不能使用聚合函数(如 SUM、COUNT)或 DISTINCT 关键字
待续、更新中
—————————————————————
以上就是今日博客的全部内容了
创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.