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

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

概念

用来产生主键的值(自己控制主键值,很容易重复,用sequence可以自动增长产生主键值)

序列可以产生1.0*10^38个数

 如何创建和使用序列

  • 创建序列:

create sequence  序列名; (和建立表一样)

用序列放入的主键值绝对不会重复

  • 使用序列:

序列名。nextval(使用序列值的下一个数)  

序列名。currval(使用当前序列数,基本不会用到)

 

一张表只能用一个序列,不能用两个序列,否则可能重复

可以两张表用一个序列,但是这样数会比较乱

演示:

(1) 创建表(之前要先删表)

create table testseq(
  id number primary key,
  name varchar2(30),
  salary number,
);

 

(2) 创建序列

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

  

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐