项目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 --
署名-非商业性使用-禁止演绎 4.0 国际 协议(CC BY-NC-ND 4.0)
最后修改:2022 年 12 月 23 日
如果觉得我的文章对你有帮助,可以点个赞再走喔