视图:---view
视图操作:1.描述视图2.创建视图3.通过视图获得数据4.改变视图的定义5.通过视图操作数据6.删除视图
什么是视图:
为什么使用视图:原因
1.限制对数据的访问2.很容易的写成复杂的查询3.允许数据的独立性4.不同的视图可获得相同的数据
创建视图:
创建视图的语句中可嵌入子查询.
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
1.子查询中可包括复杂的 SELECT 语法.
2.子查询中不能包含ORDER BY 子句.
创建视图:
方法一:
SQL> CREATE VIEW empvu10
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10;
使用 SQL*Plus DESCRIBE 命令描述视图结构.
SQL> DESCRIBE empvu10
方法二:
在子查询中使用列别名创建视图.
SQL> CREATE VIEW salvu30
AS SELECT empno EMPLOYEE_NUMBER, ename NAME,
sal SALARY
FROM emp
WHERE deptno = 30;
在查询视图时使用列别名.
SQL> SELECT EMPLOYEE_NUMBER, NAME, SALARY
FROM salvu30;
查询USER_VIEWS数据字典视图
修改视图:
使用CREATE OR REPLACE VIEW 子句修改 视图 ,并为每列加别名.
SQL> CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10;
在CREATE VIEW语句中列的别名的顺序是和子查询中一致的.
创建复杂的视图
复杂视图的特点:
1.从多个表查询
2.包含函数
3.包含分组数据
SQL> CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)
FROM emp e, dept d
WHERE e.deptno = d.deptno
GROUP BY d.dname;
对视图进行DML操作的规则
1.可对简单视图执行DML操作
2.在下列情况下不能删除记录,
★视图包括组函数
★视图包括group by 子句
★视图包括distinct
★Rownum为列关键词
3.在下列情况下不能修改记录
★前面所提到的情况
★列是由表达式定义的
★包括rownum虚列
4.在下列情况下不能添加记录
★前面所提到的情况
★视图的基表有非空列,但在视图中没有此列
使用 WITH CHECK OPTION 子句
使用WITH CHECK OPTION可使DML操作限制在视图所包含的范围
内.
SQL> CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM emp
WHERE deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck;
删除视图:
删除视图并不删除基表中的数据
DROP VIEW view;
SQL> DROP VIEW empvu10;
View dropped.
视图可从其他的表或视图中获取数据.
视图提供如下优点:
★限制数据的访问
★简化查询
★提供独立的数据
★允许多个视图使用相同的数据
★删除时不影响基表
其他数据库对象
• 描述其他的数据库对象和使用
• 创建,修改,使用序列号
• 创建和维护索引
• 创建公共和私有的同义词
数据库对象:table,view,sequence(生成主键值),Index(改进查询的性能),synonym(为对象建立一个同名对象)。