什么是将军印:创建、删除和修改视图
来源:百度文库 编辑:偶看新闻 时间:2024/05/08 20:46:45
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
哪些行与列。
[ 示例 ]-[ 创建视图 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
SQL中视图的创建。修改,删除
视图的概念,种类及创建以及可更新视图和不可更新视图的特点
怎样用mysql语言创建视图
Sql server 2000创建视图
SQL中视图的修改
如何修改文件属性中的创建时间和修改时间?
如何在视图上创建索引
数据库问题:如何利用菜单创建“视图”?!
创建视图错误 列名重复
我修改了物品和删除了一些物品.现在为什么创建不了人物.我的是超级变态传奇SF.请高手帮帮.!!
怎样修改文件夹的视图方式
修改系统的文件默认视图方式
存储过程中可以修改视图吗
怎么修改word和excel的文档创建时间?
文件的创建时间和修改时间的问题
如何删除和修改贴子信息
怎么删除和修改开机密码?
see163个性资讯的删除和修改
为什么在受限用户里还能修改删除管理员帐户上创建的文件
SQL登录帐户后创建,管理和删除操作
如何在DreamWaver和FrontPage中创建与删除框架?
在GHOST里怎样删除和创建分区啊!
如何在cmd 下创建用户和删除用户
如何win xp里面删除和创建硬盘分区