- 从一个或几个表(或视图)导出的表,是虚表
- 只保存视图的定义,不存放视图的数据
- 以多种角度观察数据库中的数据
符号说明
<…>表示必填
[…]表示选填,可写可不写,不写时会有默认值
(…)是一种语法,需要写出 ()
定义视图
create view <视图名> [(<视图列的列表>)] as <查询块/子查询> [with check option]
- 查询块中不允许出现排序order by
- 视图列的列表(<列1>,<列2>,<列3>)不写时,视图包含查询块所有字段
- with check option表示对视图操作满足查询块条件(对视图更新之后,仍然可以通过视图查询到该更新)
删除视图
drop view <视图名>
- 基本表的数据不受影响
- 参考该视图而定义的视图失效
查询视图
select * from <视图名> where <条件>
和查询表的操作一致,只是表名换为视图名
参考查询表
更新视图
insert into <视图名> values(<值1>,<值2>,<值3>)
update <视图名> set <列名>=<值> where <条件>
delete from <视图名> where <条件>
和更新表的操作一致,只是表名换为视图名。并非所有的视图都可以更新。
参考更新表
示例代码
用到的3个表,Student、SC、Course
创建一个视图
create view V_sc(姓名,课程,成绩) as
select Sname,Cname,Grade from Student x,Course y,SC z where x.Sno=z.Sno and y.Cno=z.Cno
查询视图
select * from V_sc
更新视图
update V_sc set 成绩=60 where 姓名='刘晨' and 课程='数据库'
可以看到SC表的内容已经更新
视图V_sc的内容如也改变了
广而告之
150讲轻松搞定Python网络爬虫
Java小白修炼手册