数据库中和表并列的其余对象

序列  sequence (除了表外,这个最重要)

概念

用来产生主键的值(本身控制主键值,很容易重复,用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;

建立序列是能够规定其属性(知道就行)

  • create sequence  序列名(表名_要使用序列的字段名)
  • minva 1     最小值
  • maxvalue 9999999   最大值   
  • increment by  1   每次增加数
  • start with  216   从哪里开始
  • nocache   有没有缓存
  • noorded   能不能排序
  • nocycle ;  能不能循环

索引  index(不重要,了解就行,DBA才用)

做用

加速查询速度

原理

底层经过树状结构组织数据,消耗了大量的空间和时间来加速查询。消耗的是创建索引的时间,一旦索引创建完毕,查询就很快。组织数据的树状结构消耗的空间很大。

 

索引就像书的目录,正常的查找数据像在书中一页一页查询数据量越大,索引的优点越大

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)里是怎样写的?(大小写不敏感)

(1)删序列

drop sequence   序列名;

(2)删表   

drop table  表名  cascade constraint /* 解除关联*/  ; 

(3)建立序列(设置属性)(通常以前删了几个就建立几个)

create  sequence  序列名  属性;

(4)建立表(字段,列级约束,表级约束)  

create table  表名(字段以及约束);

(5)增长数据  

insert into  表名  values(  匹配表的要求的要增长的数据  );

(6)提交修改  

commit  ;

***(4)(5)(6)每建立一个表写一次

(7)加外键约束

alter table  子表名
add  constraint 子表名_加外键的字段名_fk
foreign  key(加外键的字段名)reference(父表名_被加外键的字段名);

(8)输出

Prompt table   and  sequences created  and  populated.set feedback  on

相关文章
相关标签/搜索