數據庫中和表並列的其餘對象

序列  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

相關文章
相關標籤/搜索