视图 序列 索引

创建一个视图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 (列名)

你可能感兴趣的:(视图 序列 索引)