資料庫索引與自增序列

2021-08-08 21:14:34 字數 3467 閱讀 2449

建立檢視

優點:建立索引可以大大提高系統的效能。

第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。

第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

第四,在使用分組和排序 子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

缺點:降低了系統的維護速度和增大了空間需求

第一,建立索引和維護索引要耗費時間,這種時間隨著資料 量的增加而增加。

第二,索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。

第三,當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。

(primary key[列名,[列名]])

create table emp (  

id number(6) primary key,--主鍵

name varchar2(20) not null,--非空

*** number(1),

age number(3) default 18,

email varchar2(25) unique,--唯一

deptno number(2) references dept(deptno)—外來鍵

);

帶約束名稱:

create table emp (  

id number(6) constraint id_pk primary key,

name varchar2(20) constraint name_nn not null,

*** number(1),

age number(3) default 18,

email varchar2(25) constraint email_uqe unique,

deptno number(2) constraint dept_deptno_ref references dept(deptno)

);

列模式:

create table emp (  

id number(6),

name varchar2(20),

*** number(1),

age number(3) default 18,

email varchar2(25),

deptno number(2),

constraint id_pk primary key (id),--也可以兩個以上,聯合主鍵

constraint dept_deptno_ref foreign key (deptno) references dept(deptno),

constraint emial_name_uqe unique (email, name)

);

主鍵索引

主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵。

主鍵就是能夠唯一標識表中某一行的屬性或屬性組,乙個表只能有乙個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新、刪除的時候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外來鍵構成參照完整性約束,防止出現資料不一致。資料庫在設計時,主鍵起到了很重要的作用。

主鍵可以保證記錄的唯一和主鍵域非空,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵也是乙個特殊的索引。

**唯一索引 **

普通索引:

聯合索引:

**反向鍵索引 **

**位圖索引 **

**索引組織表,一定要有主鍵 **

create table tab (  

id int primary key,

name varchar2(20)

) organization index;

注:索引組織表的insert效率非常低

**分割槽表索引 **

create index 索引名 on table(column) local/global;

mysql不自帶sequence,但是可以設定自動增長序列,設定是必須要有主鍵(primary key)

建立表時建立

creat table emp(

id int auto_increment primary key,

.....

);

建立表後新增

設定自增序列的啟始值

注:也可以讓自增序列值從123變為2,從2重新開始;

建立自增序列

使用時的名字為

**create sequence 序列名

start with 2 –從2開始

increment by 3—每次加3

nomaxvalue—沒有最大值

minvalue 1—最小值1

nocycle—不迴圈

nocache;–不快取 **

**修改序列的序列值 **

**alter sequence seqtab

maxvalue 1000; **

注:不能修改為起始值

修改序列值可以先查詢出來再increment修改回來

select sql.nextval from dual;

alter sequence seq increment by 79;

序列已更改

如果需要經常執行某項複雜的查詢,可以基於複雜查詢建立此檢視即可,簡化複雜查詢;

檢視本質上就是一條select語句,所以當訪問檢視時,只能訪問到所對應的的select語句中涉及到的列,對基表中的其他列起到安全和保密的作用,可以限制資料訪問

授權建立檢視

建立檢視

檢視檢視結構

oracle資料庫自增

1 建立sequence create sequence seq seq1 minvalue 1 maxvalue 99999999999999 start with 1 increase by 1 chache 20 如果指定cache值,oracle就可以預先在記憶體裡面放置一些sequence...

資料庫自增型別

from 一 通過t sql 複製 如下 alter table 表名 add 列名 int identity 1,1 not null 這裡用到了identity關鍵字 indentity a,b a b均為正整數,a表示開始數,b表示步長,indentity 1,1 就代表從1開始,每次增加1 ...

Oracle資料庫主鍵自增

在學習mysql時,我們很容易通過auto increment就能實現主鍵自增的功能,但是在oracle資料庫中,是沒有這個關鍵字的,所以也不能通過這樣來實現主鍵自增。下面我就為大家介紹兩種實現主鍵自增的方法。兩種方法的基礎都有乙個概念就是序列 sequence 的概念,一種是利用序列和顯式呼叫的方...