项目8 创建与管理图书借阅网站项目视图
8.3 任务2——创建视图
--- 8.3.1 创建视图 ---
--- 1.创建简单视图 ---
-- 例8.1 --
CREATE VIEW V_BLGPUBLISHBOOK
AS
SELECT * FROM BOOK
WHERE BOOKPUBLISH = '北京理工大学出版社';
-- 创建北京理工大学出版社出版的图书信息视图 --
--- 2.创建复杂视图 ---
-- 例8.2 --
CREATE VIEW V_BOOK
AS
SELECT ISBN,BOOKNAME,BOOKTYPENAME
FROM BOOK JOIN BOOKTYPE
ON BOOK.BOOKTYPEID = BOOKTYPE.BOOKTYPEID;
-- 创建图书信息视图V_BOOK,包含图书ISBN、书名及图书类型名 --
--- 3.创建具有CHECK OPTION约束的视图 ---
-- 例8.3 --
CREATE VIEW V_CHECK_BOOKPRICE
AS
SELECT * FROM BOOK
WHERE PRICE < 40
WITH CHECK OPTION;
-- 创建单价小于40的图书信息视图,带有CHECK OPTION约束 --
--- 4.创建具有READ ONLY约束的视图 ---
-- 例8.4 --
CREATE VIEW V_BOOK_READONLY
AS
SELECT * FROM BOOK
WITH READ ONLY;
-- 创建所有图书信息只读视图V_BOOK_READONLY --
--- 8.3.2 查看视图 ---
--- 1.查看用户创建的视图 ---
-- 例8.5 --
SELECT VIEW_NAME FROM USER_VIEWS;
-- 查看当前用户BOOKUSER创建的视图名称 --
--- 2.查看视图定义 ---
-- 例8.6 --
SELECT VIEW_NAME,TEXT
FROM USER_VIEWS
WHERE VIEW_NAME = 'V_BLGPUBLISHBOOK';
-- 查看视图V_BLGPUBLISHBOOK --
--- 3.查看视图结构 ---
-- 例8.7 --
Desc V_BLGPUBLISHBOOK;
-- 查看视图V_BLGPUBLISHBOOK的结构 --
8.4 任务3——使用视图
--- 8.4.1 对视图执行查询操作 ---
-- 例8.8 --
SELECT BOOKNAME,BOOKPUBLISH FROM V_BLGPUBLISHBOOK;
-- 查看视图V_BLGPUBLISHBOOK中的数据 --
--- 8.4.2 对视图执行修改操作 ---
--- 1.对简单视图执行修改操作 ---
-- 例8.9 --
INSERT INTO
V_BLGPUBLISHBOOK(ISBN,BookNo,BookName,BookWriter,BookPublish,Price,PublishDate)
VALUES('9787730224493','TP211.2-16','Spring框架技术','孙妍','清华大学出版社',40,date'2018-03-15');
-- 向视图V_BLGPUBLISHBOOK中插入一行数据 --
SELECT BOOKNAME,BOOKPUBLISH FROM V_BLGPUBLISHBOOK;
-- 查看视图中的数据 --
SELECT BOOKNAME,BOOKPUBLISH FROM BOOK;
-- 再查看基本表BOOK中的数据 --
-- 例8.10 --
UPDATE V_BLGPUBLISHBOOK SET BOOKNAME = 'C程序设计'
WHERE BOOKNAME = 'C语言程序设计';
-- 将视图V_BLGPUBLISHBOOK中《C语言程序设计》一书书名改为《C程序设计》 --
SELECT BOOKNAME,BOOKPUBLISH FROM V_BLGPUBLISHBOOK;
-- 查询删除之后的视图 --
DELETE FROM V_BLGPUBLISHBOOK;
-- 删除简单视图数据 --
SELECT BOOKNAME,BOOKPUBLISH FROM V_BLGPUBLISHBOOK;
-- 查询删除之后的视图 --
--- 3.对带有WITH CHECK OPTION约束的视图执行修改操作 ---
-- 例8.11 --
INSERT INTO V_CHECK_BOOKPRICE
(ISBN,BookNo,BookName,BookWriter,BookPublish,Price,PublishDate)
VALUES('9787730224433','TP211.3-16','计算机网络','孙雪','清华大学出版社',50,date'2018-03-15');
-- 向带有WITH CHECK OPTION约束的视图V_CHECK_BOOKPRICE插入一行违反约束的数据 --
--- 4.只读视图只能查看,不能修改 ---
8.5 任务4——管理视图
--- 8.5.1 修改视图 ---
--- 1.修改视图定义 ---
-- 例8.12 --
CREATE OR REPLACE VIEW V_BLGPUBLISHBOOK(ISBN,NAME,PUBLISH,PRICE)
AS
SELECT ISBN,BOOKNAME,BOOKPUBLISH,PRICE FROM BOOK
WHERE BOOKPUBLISH = '北京理工大学出版社';
-- 更改视图V_BLGPUBLISHBOOK的定义,指定视图包含列名 --
SELECT VIEW_NAME,TEXT
FROM USER_VIEWS
WHERE VIEW_NAME = 'V_BLGPUBLISHBOOK';
-- 重新查看视图V_BLGPUBLISHBOOK的定义 --
DESC V_BLGPUBLISHBOOK;
-- 查看视图结构 --
--- 2.修改视图,增加约束 ---
-- 例8.13 --
CREATE OR REPLACE VIEW V_BLGPUBLISHBOOK(ISBN,NAME,PUBLISH,PRICE)
AS
SELECT ISBN,BOOKNAME,BOOKPUBLISH,PRICE FROM BOOK
WHERE BOOKPUBLISH = '北京理工大学出版社'
WITH CHECK OPTION;
-- 修改视图V_BLGPUBLISHBOOK,增加检查约束 --
--- 3.修改视图只读属性 ---
-- 例8.14 --
CREATE OR REPLACE VIEW V_BLGPUBLISHBOOK(ISBN,NAME,PUBLISH,PRICE)
AS
SELECT ISBN,BOOKNAME,BOOKPUBLISH,PRICE FROM BOOK
WHERE BOOKPUBLISH = '北京理工大学出版社'
WITH READ ONLY;
-- 修改视图为只读 --
--- 8.5.2 验证视图 ---
-- 例8.15 --
SELECT OBJECT_NAME,STATUS
FROM USER_OBJECTS
WHERE OBJECT_NAME = 'V_BLGPUBLISHBOOK';
-- 修改基表,致使视图无效 --
--- 3.修改基表BOOK
ALTER TABLE BOOK MODIFY(BOOKNAME VARCHAR2(50));
--- 4.重新编译,使视图有效
ALTER VIEW V_BLGPUBLISHBOOK COMPILE;
--- 8.5.3 强制创建视图 ---
-- 例8.16 --
-- 1.强制创建视图
CREATE FORCE VIEW INVALID_VIEW
AS
SELECT * FROM TABLE_NOT_EXIST;
-- 创建基本表不存在的视图 --
SELECT VIEW_NAME FROM USER_VIEWS;
-- 通过数据字典USER_VIEWS查看用户视图信息 --
-- 2.查看视图状态
SELECT OBJECT_NAME,STATUS
FROM USER_OBJECTS
WHERE OBJECT_NAME = 'INVALID_VIEW';
-- 由于视图所依赖的表基表不存在,所以视图的状态为无效 --
--- 8.5.4 删除视图 ---
-- 例8.17 --
DROP VIEW V_BLGPUBLISHBOOK;
-- 删除视图V_BLGPUBLISHBOOK --