Oracle

1.CLEAR BREAK
其中
page 表示遇到断点时产生新的一页
skip n 表示遇到断点时跳跃n行
duplicate 显示重复值
并且断点可以作用于:列、行、页、报表。
清除所有BREAK设置使用CLEAR命令:
CLEAR BREAK
例如:分部门分工种统计员工的总收入
break on deptno
select deptno,job,sum(sal) from emp group by deptno,job
order by deptno;
2、TTITLE
TTI[TLE] [text|OFF|ON]
例如:在上例查询结果中添加页眉
TTITLE ’ 信息与艺术学院 ’
break on deptno
select deptno,job,sum(sal) from emp
group by deptno,job
order by deptno;
/
3、BTITLE
BTITLE[text|OFF|ON]
例如:在上例查询结果中添加脚注“软件技术专业部”
TTITLE ‘信息与艺术学院’
BTITLE ‘软件技术专业部’
break on deptno
select deptno,job,sum(sal) from emp
group by deptno,job
order by deptno;
/
二、视图
1.视图创建语句
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view
[ (alias [,alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
例如:创建视图EMPVU10,该视图仅包含10部门雇员的细节信息。
create view empvu10
as
select empno,ename,job,deptno
from emp
where deptno=10;
例如:创建每个部门员工最高收入、员工最低收入和员工平均收入的视图
create view empvu20
(deptno,minsal,maxsal,avgsal)
as
select deptno,max(sal),min(sal),avg(sal)
from emp
group by deptno;
2.数据字典user_view
select * from user_views
3.修改视图
例如:在刚才创建的视图EMPVU10,添加一个sal列标题,请问视图的修改语句是什么?
create or replace view empvu10
as
select empno,ename,job,deptno,sal
from emp
where deptno=10;
4、视图上执行DML操作的原则
例如:基于emp数据表生成一个视图对象emp_vu
create view emp_vu
as
select * from emp;
例如:基于emp和dept部门信息表生成一个可以进行每个部门工资汇总的视图emp_dept_sum_vu
create view emp_dept_sum_vu
as
select e.deptno,d.dname,sum(e.sal) SUMSAL
from emp e,dept d
where e.deptno=d.deptno
group by e.deptno,d.dname;
例如:测试尝试通过emp_vu视图删除10部门的员工信息,并查看是否能成功删除
delete emp_vu
where deptno=10;
通过测试成功
例如:测试尝试通过emp_dept_sum_vu视图删除dname为’SALES’的部门信息,并查看是否能成功删除
delete emp_dept_sum_vu
where dname=‘SALES’;
通过测试失败
原因是,如果是视图中包含以下内容则不能删除数据行
group 函数
group by 子句
distinct 关键字
5.视图中应用with check option
修改之前的视图,添加约束字句
create or replace view emp_vu
as
select * from emp
where deptno=20
with check option constraint empvu20_ck;
通过emp_vu修改7902员工的部门编号,修改为30
update emp_vu
set deptno=30
where empno=7902;
不可以的原因有约束
请问可否通过emp_vu完成7902的工资从原数据值到8000的修改?
可以,视图里面只有部门编号的约束。
通过测试我们发现可以修改
请问可否通过emp_vu完成(7100,‘LVTAO’,30)记录的插入吗?为什么?
不可以,因为这个视图有一部门编号为20约束
请创建一个工资约束条件为大于3000元的视图,视图中包含empno,ename,sal,deptno视图名为emp_sal_vu
create view emp_sal_vu
as
select empno,ename,sal,deptno from emp
where sal>3000
with check option constraint emp_sal_vu_ck;
请问通过视图名为emp_sal_vu添加一条新纪录(7200,‘WXP’,1500,20)可以吗?
不可以,因为sal=1500不满足这个视图约束条件
6.with read only子句
功能:定义视图为只读视图,不可以通过只读视图完成数据的增删改
例如:创建一个带with read only
create view emp_vu30
as
select empno,sal,ename,deptno
from emp
where deptno=30;
with read only;
例如:测试删除7900员工记录,查看是否可以?
delete emp_vu30
where empno=7900;
不可以,因为with read only
7.删除视图
drop view emp_vu30;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值