一.视图
1依据一个表创建一个视图
视图只能用于查询
创建一个视图的方式
create or replace view empinfo
as
select empno,ename,job,hiredate from emp;
select *from empinfo;
2.查询视图,并且·按照empno排序
select * from empinfo order by empno;
等价于
select*from (select empno,ename,job,hiredate from emp);
3.select deptno,avg(sal),max(sal),min(sal)from emp group by deptno;
4.此时的查询语句表名要使用别名
create or replace view salinfo
as
select deptno,avg(sal) **avg,**max(sal) **max,**min(sal) min from emp group by deptno;
5.视图不能插入,只能查询
insert into salinfo values(50,3000,5000,200);
insert into empinfo values(222,‘22’,‘2222’,null);
二.序列:
生成主键的方式:
将创建语句的CREATE改为ALTER即可。START WITH不能修改
ALTER SEQUENCE seqname
[INCREMENT BY n] --步长
[{MAXVALUE n}] --最大值
[{MINVALUE n}] --最小值
[{CYCLE|NOCYCLE}] --达到最大最小值后是否循环
[{CACHE n|NOCACHE}] --事先缓存多少个值在数据库
修改序列后,修改之前使用序列产生的主键不受影响。
1、max(id),线程安全问题——>适合单线程
2、外部程序获取id——>效率低
3、序列获取id——>seq_emp——>默认是1000个——>
NEXTVAL下一个数
CURRVAL现在是哪一个
create sequence seq_emp increment by 2;创建步长为2的序列
alter sequence seq_emp increment by 1;修改序列的步长1
select seq_emp.nextval from dual;(先有)
select seq_emp.currval from dual;(后有)
将主键序号写入数据库
insert into (或者lisi.login)login values(seq_emp.nextval,‘sss’,‘sss’);
删除序列
drop sequence seq_emp;
三.索引——索引不能修改,只能删除
提高查询效率,但对增删改不友好。
create sequence