序列、索引

2017-12-17  本文已影响0人  李昱俊

创建序列

例:创建序列test_seq,起始值为10,每次增长2,最大值100,最小值9,循环序列,每次缓存10

create sequence test_seq
start with 10
increment by 2
maxvalue 100
misvalue 9
cycle
cache 10

使用序列

insert into dept
values (test_seq.nextval,yanfabu,dalasi,)

练习

  1. 创建一个序列,该序列起始值从1开始,无最大值,增量是1,不循环。
CREATE sequence asd_seq
  1. 查询序列的当前值及下一个值
SELECT asd_seq.nextval FROM DUAL
SELECT asd_seq.currval FROM DUAL
  1. 使用第1题所建的序列,向部门表中插入两条记录,部门编号使用序列值,部门名称分别为:Education、Market,城市分别为:DALLAS、WASHTON
INSERT INTO dept
VALUES (asd_seq.nextval,'education','dallas')
INSERT INTO dept
VALUES (asd_seq.nextval,'maeket','washton')

修改序列

alter sequence test_seq
increment by 4
maxvalue 1000
nocache 

修改序列的语法没有START WITH子句。

删除序列

drop sequence test_seq (序列名)

创建索引

create index idx_emp_ename(索引名)
on emp(ename)

例:在emp表的deptno和job的组合上创建索引

create index idx_emp_deptnojob
on emp(deptno,job)

练习

  1. 使用子查询的方式,创建test表。
create TABLE test
AS
SELECT * from emp
  1. 快速复制test表中的数据,复制到100w条左右
INSERT INTO test
SELECT * FROM emp
  1. 更新test表中的empno字段为rownum
UPDATE TEST SET EMPNO=ROWNUM
  1. 查询test中empno为800000的记录值,记录查询执行时间。
SELECT * FROM TEST
WHERE empno=800000
  1. 在test表的empno字段上创建索引
CREATE INDEX IDX_TEST_EMPNO
ON test(empno)
  1. 重新执行第4题,对比查询时间
SELECT * FROM TEST
WHERE empno=800000

删除索引

drop index idx_emp_ename(索引名)
上一篇 下一篇

猜你喜欢

热点阅读