打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
创建、删除和修改视图
CREATE VIEW SQL 语句用于定义视图。 SELECT 语句用于指定将在视图中显 示
哪些行与列。
[ 示例 ]-[ 创建视图 1] :
CREATE VIEW NONFICTIONBOOKS AS
SELECT * FROM BOOKS WHERE BOOKTYPE = 'N'
[ 示例 ]-[ 创建视图 2] :
CREATE VIEW MYBOOKVIEW (TITLE,TYPE) AS
SELECT BOOKNAME,BOOKTYPE FROM BOOKS
DROP VIEW SQL 语句用于从数据库中删除视图。如果删除一个视图所基于的
表或另一个视图,那么这个视图依然在数据库中被定义,但变得不起作用。
SYSCAT.VIEWS 的 VALID 列表明视图是有效的( ‘ Y ’ )还是无效的( ‘ X ’ ) 。
即使重新创建基表,无效的视图仍然是无效的;必须也重新创建它。
[ 示例 ]-[ 删除视图 ] :
DROP VIEW MYBOOKVIEW
不能修改视图;要更改视图定义,必须删除视图,然后重新创建它。 DB2 提
供的 ALTER VIEW 语句只用于修改引用类型。
 
在创建一个视图时,可以将它定义为只读视图 或者可更新视图。视图的
SELECT 语句决定视图是只读的还是可更新的。
一般情况下,如果视图中的行可以映射到基表中的行,那么该视图就是可更
新的。例如,就像前面示例中定义的那样,视图 NONFICTIONBOOKS 是可更新的 ,
因为视图中的每一行都是基表中的行。
创建可更新视图的规则很复杂,它们取决于查询的定义。例如,使用 VALUE S 、
DISTINCT 或 JOIN 特性的视图是不可更新的。通过查看 SYSCAT.VIEWS 的
READONLY 列很容易就能确定视图是不是可更新的: Y 表示只读, N 表示非只读 。
先前定义的 NONFICTIONBOOKS 视图只包含 BOOKTYPE 为 N 的行。如果向这
个视图中插入一个 BOOKTYPE 为 F 的行, DB2 将把该行插入到基表 BOOKS 中 。
但是,如果以后从视图中进行选择,通过该视图却看不到新插入的行。如果不 想
允许用户插入视图范围以外的行,那么在定义视图时可以使用检查选项。使用
WITH CHECK OPTION 定义视图会让 DB2 检查使用视图的语句是否满足视图的条
件。
[ 示例 ]-[ 视图检查定义 ] :
CREATE VIEW NONFICTIONBOOKS AS
SELECT * FROM BOOKS WHERE BOOKTYPE = 'N'
WITH CHECK OPTION
说明,这个视图仍然限制用户只能看到非小说类的书;另外,它还防止用户
插入 BOOKTYPE 列的值不为 N 的行,并防止把现有行中 BOOKTYPE 列的值更新
为 N 以外的值。例如,下列语句将不再允许使用:
INSERT INTO NONFICTIONBOOKS VALUES (...,'F');
UPDATE NONFICTIONBOOKS SET BOOKTYPE = 'F' WHERE BOOKID = 111
 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
DB2 通用数据库定义的数据类型、表、视图和索引
12.3 通过视图更新表 - 《精通SQL——结构化查询语言详解》 - 免费试读 - bo...
MySQL :: MySQL 5.1参考手册 :: 22. 视图
可更新的连接视图(updatable join view )
SAP CDS view 定义的数据库视图和传统 SQL 语句定义视图的区别
oracle中的视图详解 - 建站学
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服