序列、索引

创建序列

  • sequencename:序列对象的名字

  • INCREMENT BY n:序列每次增加值,默认为1。

  • START WITH n :序列起始值n,该项省略,起始值为1

  • MAXVALUE n :序列最大值

  • NOMAXVALUE :指定序列无最大值

  • MINVALUE n :序列最小值;

  • NOMINVALUE :指定序列无最小值

  • CYCLE|NOCYCLE:表示序列在达到最大值或最小值之后是否继续产生序列值,NOCYLE表示不再产生,NOCYLE是默认选项。

  • CACHE n|NOCACHE:表示序列值被服务器预先分配并存储在内存中,NOCACHE表示不预先分配并存储,CACHE 20是默认选项

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

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

使用序列

  • 使用序列test_seq生成dept表中deptno列插入值:
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 (序列名)

创建索引

  • 自动创建: 当有 PRIMARY KEY 或者 UNIQUE 约束时,数据库会自动创建一个索引。
  • 手动创建:
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(索引名)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为方便测试,创建表emp,包含以下信息: 视图VIEW 视图是数据库对象之一,在SQL语句中体现的角色与表一致。但...
    smallnumber阅读 2,767评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • 创建一个视图v_emp10,通过该视图只能查看10号部门的员工编号,员工姓名,职位。 创建一个视图,通过该视图可以...
    鲁斯侨阅读 3,649评论 0 1
  • 17/12/14 视图and序列、索引 视图 视图:是一个命名的查询,用于改变基表数据的显示,通过视图能简化查询;...
    金春国_Roy阅读 1,391评论 0 0
  • 几个去 IBM 面试的兄弟回来抱怨:去了好几个不同的 IBM 项目组,几乎每个面试官问到数据库的时候都要问用没用过...
    浩楠Bleach阅读 5,871评论 0 15