sql-第13章 视图

三葉Leaves Author

引言

视图可以理解为查询后得出的结果表。此时有一个疑惑: 那直接把查询后得出的结果存为表不就行了?和视图有什么区别 答案是:前者当基本表作出修改后不会同步更新,而后者可以

1.视图的创建

1.1 语法

1
2
3
4
5
CREATE VIEW 视图名
[WITH ENCRYPTION] --可选,表示视图是否加密--
AS
SELECT 查询语句
[WITH CHECK OPTION] --可选,表示是否限制视图修改--

1.2 别名

视图名后面列出字段名可以给视图中的字段起别名,如下

1
2
3
4
5
6
7
CREATE VIEW V_Sal(平均工资,最高工资,最低工资)

AS

SELECT AVG(salary),MAX(salary),MIN(salary)

FROM customer

括号内无需单引号

1.3 创建视图时的注意事项

imagepng
imagepng
如第二点所述,故要想排序,只能在查询时用 ORDER BY 语句,而非创建时

1.4 创建加密视图

若使用 WITH ENCRYPTION ,则视图被加密。主要作用在于定义视图的语句会被隐藏,而非视图本身

1.5 细说 WITH CHECK OPTION

  1. 对于 updateInsert ,若有 with check option ,则须保证修改或插入的数据在视图创建时的 WHERE 语句的条件范围内

    简单来说就是加的东西要能被查到 若创建视图时候没有用 with check optionupdateInsert 的数据即便在条件之外也仍然可以运行,但是在视图中看不到,而基本表中却可以显现

  2. 对于 delete ,有无 with check option 都一样;

  3. 对于没有 where 子句的视图,使用with check option是多余的。

2. 视图的查询

没啥别的可以说,就和查询表一样的语句

3. 视图的更新

这里的更新指的是修改其中内容,而非结构 仍然可以使用

  • UPDATE 更新数据

    更新数据时有一些注意点如下

    imagepng
    imagepng

实验:不可更新视图测试

  • INSERT 插入数据
  • DELETE 删除数据

4. 视图的删除

1
DROP VIEW 视图名称

删的挺干净,资源管理器里都查不到了,没啥好说

  • 标题: sql-第13章 视图
  • 作者: 三葉Leaves
  • 创建于 : 2024-05-16 00:00:00
  • 更新于 : 2024-11-21 16:56:20
  • 链接: https://leavesblog.netlify.app/e5af6d9b8318/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论