用来产生主键的值(本身控制主键值,很容易重复,用sequence能够自动增加产生主键值)sql
序列能够产生1.0*10^38个数数据库
create sequence 序列名; (和创建表同样)缓存
用序列放入的主键值绝对不会重复oracle
序列名。nextval(使用序列值的下一个数) 3d
序列名。currval(使用当前序列数,基本不会用到)blog
一张表只能用一个序列,不能用两个序列,不然可能重复排序
能够两张表用一个序列,可是这样数会比较乱索引
(1) 建立表(以前要先删表)内存
create table testseq( id number primary key, name varchar2(30), salary number, );
(2) 建立序列rem
create sequence testseq_id;
(3) 使用序列,向表中插入数据
insert into testseq values( testseq_id, nextval, 'test'|| testseq_id.currval, 1000*testseq_id.currval, );
drop sequence 序列名 ;(和删除表同样,不存在就说删不到)
drop sequence testseq_id;
drop sequence testseq_id;
加速查询速度
底层经过树状结构组织数据,消耗了大量的空间和时间来加速查询。消耗的是创建索引的时间,一旦索引创建完毕,查询就很快。组织数据的树状结构消耗的空间很大。
索引就像书的目录,正常的查找数据像在书中一页一页查询数据量越大,索引的优点越大
ps:set timing on 如此设置后就会统计每条操做的时间
假设有3亿条数据,要查询其中一条数据:
不用索引:
用oracle(配置为2G内存,i3处理器时)
查询一条数据大概须要60*8=480s
用索引:0.01s
对惟一性的字段,系统会自动创建索引,叫惟一性索引
非惟一性索引创建:在表的某个字段上建立索引
正经常使用法:
create index 索引名 on 表名(要建立索引的字段名);
快速建表(非正经常使用法)
create table 表名 as select id,first_name name,salary from 查询的表名
(即建的表的数据和查询的数据同样)
drop index 索引名;
数据库脚本(xxx.sql)里是怎样写的?(大小写不敏感)
drop sequence 序列名;
drop table 表名 cascade constraint /* 解除关联*/ ;
create sequence 序列名 属性;
create table 表名(字段以及约束);
insert into 表名 values( 匹配表的要求的要增长的数据 );
commit ;
alter table 子表名 add constraint 子表名_加外键的字段名_fk foreign key(加外键的字段名)reference(父表名_被加外键的字段名);
Prompt table and sequences created and populated.set feedback on