视图
练习1.1 创建一个视图,通过该视图可以查询到工资在2000-5000内并且姓名中包含有A的员工编号,姓名,工资。
create view scott.Aemp
as select empno, ename, sal
from SCOTT.emp
where sal between 2000 and 5000 and ename like '%A%'
练习1.2 通过上述创建的视图查询数据。
select * from Aemp
练习2.1 创建一个视图,通过该视图可以查询到工作在NEW YORK和CHICAGO的员工编号,姓名,部门编号,入职日期。
create view SCOTT.NCemp
as select empno, ename, e.deptno, hiredate
from SCOTT.emp e
join SCOTT.dept d on e.deptno=d.deptno
and loc in ('NEW YORK','CHICAGO')
2.2 创建一个视图,通过该视图可以查询到每个部门的部门名称及最低工资。
create view SCOTT.empvue
as select d.dname, min(e.sal) min_sal
from SCOTT.emp e
join SCOTT.dept d on e.deptno=d.deptno
group by d.dname
2.3 通过如上视图,查询每个部门工资最低的员工姓名及部门名称。
select e.ename, v.dname
from empvue v
join dept d on v.dname=d.dname
join emp e on d.deptno=e.deptno
where sal=v.min_sal
课后作业1. 创建视图v_emp_20,包含20号部门的员工编号,姓名,年薪列(年薪=12*(工资+奖金))。
create view SCOTT.v_emp_20
as select empno, ename, 12*(sal+nvl(comm,0)) income
from SCOTT.emp
- 从视图v_emp_20中查询年薪大于1万元员工的信息。
select * from v_emp_20 where income>10000
- 请问工资大于2000的员工创建视图,要求显示员工的部门信息,职位信息,工作地点。
create view SCOTT.emp_2000
as select e.deptno, job, loc
from SCOTT.emp e
join SCOTT.dept d on e.deptno=d.deptno
where e.sal>2000
序列
练习1.1 创建一个序列,该序列起始值从1开始,无最大值,增量是1,不循环。
create sequence seq_dept
1.2 查询序列的当前值及下一个值。
select seq_dept.nextval from dual;
select seq_dept.currval from dual
1.3 使用第1题所建的序列,向部门表中插入两条记录,部门编号使用序列值,部门名称分别为:Education、Market,城市分别为:DALLAS、WASHTON
insert into dept(deptno, dname, loc)
values(seq_dept.currval, 'Education', 'DALLAS');
insert into dept(deptno, dname, loc)
values(seq_dept.nextval, 'Market', 'WASHTON')
索引
- 创建索引
create index idx_emp_ename
on emp(ename)
create index idx_emp_deptnojob
on emp (deptno,job)
网友评论