笔记整理)
一、视图概述1. 什么是视图视图View是从一个或多个基本表或视图中导出的虚拟表。视图本身不实际存储数据数据库中只存放视图的定义SELECT 语句。对视图进行操作时系统会根据视图定义去操作其关联的基本表。2. 视图的优点优点说明集中数据将分散在多个表中的数据集中在一起方便查询和处理屏蔽复杂性用户不必了解复杂的表结构表结构更改也不影响用户使用简化权限管理只需授予用户使用视图的权限不必开放整个表增强安全性便于数据共享数据只需存储一次各用户不必重复定义和存储已有数据重新组织数据可以按用户习惯重新组织数据方便输出到其他应用二、创建和查询视图1. 创建视图CREATE VIEW基本语法CREATE [OR REPLACE] VIEW 视图名 [(列名列表)]ASSELECT 语句[WITH [CASCADED | LOCAL] CHECK OPTION];语法说明列名列表为视图列定义明确名称可省略默认使用 SELECT 中的列名OR REPLACE如果视图已存在则替换原有视图SELECT 语句定义视图的核心查询语句WITH CHECK OPTION对可更新进行数据修改时检查是否符合 WHERE 条件LOCAL只检查当前视图定义的条件CASCADED默认检查当前视图及所有底层视图的条件【例6-1】创建计算机类图书销售视图jsj_sellCREATE OR REPLACE VIEW jsj_sellASSELECT 订单号, sell.图书编号, 书名, 订购册数FROM book, sellWHERE book.图书编号 sell.图书编号AND book.图书类别 计算机WITH CHECK OPTION;【例6-2】创建计算机类图书平均销售视图sale_avgCREATE VIEW sale_avg (name, sale_avg)ASSELECT 书名, AVG(订购册数)FROM jsj_sellGROUP BY 书名;2. 查询视图视图创建后可以像查询基本表一样使用SELECT查询。【例6-3】查询jsj_sell中的订单号和订购册数SELECT 订单号, 订购册数FROM jsj_sell;【例6-4】查询平均订购册数大于 5 的会员-- 先创建视图CREATE VIEW kh_avg (userID, order_avg)ASSELECT 用户号, AVG(订购册数)FROM sellGROUP BY 用户号;-- 再查询视图SELECT * FROM kh_avg WHERE order_avg 5;三、操作视图通过视图修改基本表数据1. 可更新视图的条件要通过视图更新INSERT / UPDATE / DELETE基本表数据视图必须是可更新视图。 视图中的行和基本表中的行必须具有一对一的关系。2. 插入数据INSERT【例6-5】创建jsj_book视图并插入数据-- 创建视图CREATE OR REPLACE VIEW jsj_bookASSELECT *FROM bookWHERE 图书类别 计算机WITH CHECK OPTION;-- 插入记录图书类别必须为计算机否则报错INSERT INTO jsj_bookVALUES (TP.0837, 计算机, Office应用实例, 张怡怡,人民邮电出版社, 2023-10-21, 34.5, NULL, NULL, NULL);3. 修改数据UPDATE【例6-6】通过视图将计算机类图书单价降低 5%UPDATE jsj_bookSET 单价 单价 * (1 - 0.05);【例6-7】修改jsj_sell中的数据-- 修改书名修改 book 表UPDATE jsj_sellSET 书名 PHP网站制作WHERE 图书编号 TP.2525;-- 修改订购册数修改 sell 表UPDATE jsj_sellSET 订购册数 100WHERE 订单号 5;-- 错误同时修改两个表的数据UPDATE jsj_sellSET 书名 PHP网站制作, 订购册数 100WHERE 订单号 5 AND 图书编号 TP.2525;4. 删除数据DELETE【例6-8】删除jsj_book中人民邮电出版社的记录DELETE FROM jsj_bookWHERE 出版社 人民邮电出版社;四、修改和删除视图1. 修改视图定义ALTER VIEW语法与CREATE VIEW类似用于修改已存在的视图。【例6-9】将jsj_book修改为只包含图书编号、书名、单价ALTER VIEW jsj_bookASSELECT 图书编号, 书名, 单价FROM bookWHERE 图书类别 计算机;2. 删除视图DROP VIEWDROP VIEW [IF EXISTS] 视图名1 [, 视图名2, ...];六、本章核心速记操作关键字要点创建视图CREATE VIEW虚拟表不存数据OR REPLACE 可替换保证数据一致性WITH CHECK OPTION插入/更新时检查是否符合 WHERE 条件查询视图SELECT和查表一样使用更新视图INSERT/UPDATE/DELETE只能操作单表多表视图不可更新修改视图ALTER VIEW重新定义视图结构删除视图DROP VIEW只删定义不删数据支持 IF EXISTS