创建一个视图v_emp10,通过该视图只能查看10号部门的员工编号,员工姓名,职位。
create view scott.emp
as select empno, ename, sal
from SCOTT.emp
where deptno=10
创建一个视图,通过该视图可以查询到工资在2000-5000内并且姓名中包含有A的员工编号,姓名,工资。
create view scott.v2
as select empno,ename,sal
from scott.emp
where sal between 2000 and 5000
and ename like '%A%'
创建一个视图,通过该视图可以查询到工作在NEW YORK和CHICAGO的员工编号,姓名,部门编号,入职日期。
create view scott.v3
as select empno,ename,e.deptno,hiredate
from scott.emp e,scott.dept d
where e.deptno=d.deptno
and d.loc in('NEW YORK','CHICAGO')
创建一个视图,通过该视图可以查询到每个部门的部门名称及最低工资。
create view scott.v4
as select d.dname,min(e.sal) min_sal
from scott.emp e,scott.dept d
where e.deptno=d.deptno
group by d.dname
通过如上视图,查询每个部门工资最低的员工姓名及部门名称。
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
修改视图
-
CREATE OR REPLACE VIEW
-
可以删除修改插入试图,排除以下情况
-GROUP 函数
-GROUP BY 子句
-DISTINCT
-ROWNUM 伪列
-
拒绝DML操作
-WITH READ ONLY
创建视图v_emp_20,包含20号部门的员工编号,姓名,年薪列 年薪=12 工资+奖金。
create view SCOTT.v_emp_20
as select empno, ename, 12*(sal+nvl(comm,0)) income
from SCOTT.emp
where deptno=20
从视图v_emp_20中查询年薪大于1万元员工的信息。
select * from v_emp_20 where income>10000
请问工资大于2000的员工创建视图,要求显示员工的部门信息,职位信息,工作地点。
create view SCOTT.v5
as select e.deptno, job, loc
from SCOTT.emp e
join SCOTT.dept d on e.deptno=d.deptno
where e.sal>2000
序列
-
SEQUENCE
-
CURRVAL 当前值
-
NEXTVAL 下一个值
在 INSERT INTO 中比较常用
创建一个序列,该序列起始值从1开始,无最大值,增量是1,不循环。
create sequence test_seq
start with 1
increment by 1
查询序列的当前值及下一个值。
select seq_dept.nextval from dual
select seq_dept.currval from dual
使用第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 indexname
ON table (列名)