视图

1.  为什么要使用视图:

限制数据访问(权限控制)

使复杂的查询变得容易

提供数据独立性

提供相同数据的不同视图

2.  创建视图的准则:

定义视图的字查询不能包含ORDER BY字句。ORDER BY字句是在视图中检索数据时指定的,如果不为WITH CHECK OPTION创建的视图指定约束名,系统会以SYS_Cn格式指定一个默认名称,可以使用OR REPLACE选项更改视图定义,而不必先删除再重新创建它,也不必重新授予以前授予它的对象权限。

3.  数据字典中的视图:

一旦创建了视图,就可以查询称为USER_VIEWS的数据字典视图来查看视图名称和视图定义

4.  修改视图:使用CREATE OR REPLACE VIEW字句修改:使用OR REPLACE选项,即使已经存在同名视图也可以创建视图,从而为该视图的所有者替换其旧版本。

Create or replace view emp80 ( id_number,name,sal,department_id)

As select employee_id,last_name,salary,department_id from employees where department_id=80;

5.  在视图上执行DML操作的规则:

可以在简单视图上执行DML操作

如果视图包含以下内容,则不能删除行:

a.       分组函数

b.       GROUP BY字句

c.       DISTINCT 字句

d.       伪列ROWNUM关键字

如果视图包含以下内容,则不能在视图中修改数据:

a.       分组函数

b.       GROUP BY字句

c.       DISTINCT 关键字

d.       伪列ROWNUM关键字

e.       由表达式定义的列

如果视图包含以下内容,则不能通过视图添加数据:

a.       分组函数

b.       GROUP BY字句

c.       DISTINCT 关键字

d.       伪列ROWNUM关键字

e.       由表达式定义的列

f.        基表中未被视图选中的NOT NULL

6.  使用WITH CHECK OPTION字句

可以确保在视图上执行的DML操作发生在视图的范围内

Create or replace view emp20

As select * from employees where department_id=20 with check option constraint emp20_ck;

尝试在这个视图中更改任一行的部门编号都不会成功,因为它违反了WITH CHECK OPTION约束

7.  拒绝DML操作

通过在视图定义定义中添加WITH READ ONLY选项可以确保不能执行DML操作,任何对视图中的行执行DML的尝试都会导致ORACLE服务器错误。

Egcreate or replace view emp10(id,name,title)

as select employee_id,last_name,job_id from employees where department_id=10 with read only;

8.  删除视图

Drop view emp10;

9.  内联视图

         内联视图是带有可以在SQL语句中使用的别名(或相关名称)的字查询。

         Egselect a.last_name, a.salary, a.department_id, b.maxsal

                   From employees a, (select department_id,max(salary) maxsal from employees group by department_id) b where a.department_id=b.department_id and a.salary<b.maxsal;

10. TOP-N排序

         Select rownum as rank, last_name, salary from (select last_name,salary from employees order by salary desc) where rownum<=3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值