视图是一个虚拟的表,视图本身不包含任何数据。
1.视图的语法
CREATE [OR REPLACE] VIEW view_name [(column_name1[,column_name2…
AS
select_statement
[WITH CHECK OPTION] ---数据库增加或修改数据时必须满足子查询的条件
[WITH READ ONLY]----创建可读视图,不允许修改
2.视图创建
(创建视图需要create view系统权限,可以使用sysdba用户给当前登陆用户赋予该权限:grant create any view to user_name)
2.1单表视图创建
CREATE OR REPLACE VIEW v_avg AS
SELECT name 水果名称,shuliang 数据,jiage 价格 FROM t_avg
WHERE type='01';
2.2多表视图创建
CREATE OR REPLACE VIEW v_t AS
SELECT a.name 水果名称,a.shuliang 数据,a.jiage 价格,b.typename FROM t_a a,t_b b
WHERE a.type='01'
AND a.type=b.typeid;
2.3创建视图的视图
CREATE OR REPLACE VIEW v_t_1 AS
SELECT t.水果名称,t.typename 类型 FROM v_t t;
2.4创建没有源表的视图
CREATE OR REPLACE FORCE VIEW v_notable AS SELECT t.水果名称,t.typename 类型 FROM notable t;
2.5创建带约束的视图
CREATE OR REPLACE VIEW constraint_name
(
column1 CONSTRAINT constraint_name UNIQUE RELY DISABLE NOVALIDATE, ----表示约束对此前和此后的数据都不进行检查。
column2,
column3 CONSTRAINT constraint_name PRIMARY KEY (column4) RELY DISABLE NOVALIDATE
)
AS select_statement
3.视图修改
3.1视图结构修改
ALTER VIEW view_name ADD CONSTRAINT constraint_name unique (column) DISABLE NOVALIDATE;
3.2视图约束修改
ALTER VIEW DROP CONSTRAINT constraint_name;
4.视图删除
DROP VIEW view_name[CASCADE CONSTRAINTS]; -----CASCADE CONSTRAINTS表示删除视图时删除约束。
-----------------
ORA-01732: 此视图的数据操纵操作非法
有限制的,详细参考concepts
而可更新的连接视图(updatable join view )是指能够执行 UPDATE,
INSERT,和 DELETE 操作的连接视图(join view)。
ALL_UPDATABLE_COLUMNS,DBA_UPDATABLE_COLUMNS,及
USER_UPDATABLE_COLUMNS 数据字典视图(data dictionary view)中的信
息描述了视图中那些列是可更新的。为了保证视图是可更新的,其定义中不
能包含以下语法结构(construct):
● 集合操作符(set operator)
● DISTINCT 操作符
● 聚合函数(aggregate function)或分析型函数(analytic function)
● GROUP BY,ORDER BY,CONNECT BY,或 START WITH 字句
● 在 SELECT 之后的列表中使用collection expression
● 在 SELECT 之后的列表中使用子查询(subquery)
● 连接(join)(但是有例外情况)
评论回复