视图
建立视图
在单个表的基础上建立视图
查询结果
在多个表的基础上建立视图
在FROM后 标明要查询的数据表
查询结果
建立的视图基础上的视图
将FROM中的查询的表改成指定视图就行
其他部分和从表建立视图一样
带表达式的视图
派生属性
- 经过计算产生的属性
比如 一个表中知道了 年龄 那么 2023-age 就得到了这个人的出生年份
这个出生年份就是派生属性 所以派生属性是由表中的属性 计算得来的
虚拟列
- 由派生属性得到的属性列
上面得到的派生属性 出生年份 对于每一个元组而言 都能获取到 从而产生了Birth(属性列)
Birth是一个属性列 这里的 所存储的就是派生属性出生年份
由于属性是派生出来的 并非实际存在于表中的 所以由派生属性构成的列就是虚拟列
查询结果
行列子集视图
- 从基本表导出的视图
- 去掉了基本表中的一些列 但保留了主码
分组视图
使用了聚集函数的视图 和GROUP BY的子句的查询
删除视图
语法:
DROP VIEW 视图名称 [CASCADE]
[CASCADE]
是可选的 如果使用了CASCADE 则表示级联删除
即删除该视图的同时也将所有从该视图导出的视图一并删除
不过在MySQL中好像不起作用
级联删除
执行级联删除 DROP VIEW m_student CASCADE
级联视图还在???
查询视图
视图定义了之后可以想基表一样进行进行查询
视图消解(查询视图的过程)
什么是视图消解
视图消解是指将查询视图转化为基本表的过程。
当查询视图被使用时,系统会自动将它转化为基本表,并将查询条件应用于基本表,最终得到查询结果。这个过程是在查询执行之前进行的。视图消解可以提高查询效率和简化查询语句。
- 取出视图定义
- 将视图定义条件和用户和查询条件进行结合()
- 将视图转换成基本表
- 将结合后的查询条件应用于视图转换而来的基本表
大致流程
视图⟶基本表⟶复合查询条件⟶查询结果
符合查询条件=定义视图时的条件+查询视图时的条件
其他
如果创建的视图使用了基本表中的全部属性
也就是 查询语句中 有SELECT *
那么 基本表的改变 会使得视图不能正常工作
所以 得先删除该视图 修改完基本表 再重新创建该视图