資料庫七 序列 索引 約束

2021-08-18 18:11:14 字數 2601 閱讀 9969

序列:

序列也是資料庫物件之一,作用是生成一系列數字。系列常用於為某張表的主鍵字段提供值使用。

建立序列

create sequence seq_emp_id 

start with 1

increment by 1;

序列支援兩個偽列:

nextval:獲取序列下乙個值。

若是新建立的序列,那麼第一次呼叫返回的是start with指定的值,以後每次呼叫都會得到當前序列值加上步長後的數字。

nextval會導致序列發生步進,且序列不能回退。

currval:獲取序列當前值,即:最後一次呼叫nextval後得到的值,currval不會導致步進。但是新建立的序列至少呼叫一次nextval後才可以使用currval;

刪除序列:

drop sequence seq_emp_id;

索引:

索引是資料庫物件之一。索引是為了提高查詢效率。

索引的統計與應用是資料庫自動完成的,只要資料庫認為可以使用某個已建立的索引時就會自動應用。

建立索引:

在emp表的ename列上建立索引?

create index idx_emp_ename on emp(ename);

----復合索引---

復合索引也叫多列索引,是基於多個列的索引

-如果經常在order by 子句中使用job和sal作為排序依據,可以建立復合索引:

create index idx_emp_jon_sal on emp(job,sal);

-當做下面的查詢時,會自動應用索引idx_emp_job_sal?

select empno, ename, sal, job from emp order by job,sal;

建立基於函式的索引:

-如果需要在emp表的ename列上執行大小寫無關搜尋,可以在此列上建立乙個基於upper函式的索引;

create index emp_ename_upper_idx on emp(upper(ename));

-當做下面的查詢時,會自動應用剛剛建立的索引:

select *from emp where upper(ename) = 'king';

修改和刪除索引:

--如果經常在索引列上執行dml操作,需要定期重建索引,提高索引的空間利用率:

alter index index_name rebuild;

--重建索引idx_emp_ename

alter index idx_emp_ename rebuild;

--當乙個表上有不合理的索引,會導致操作效能下降,刪除索引的語法:

drop index index_name;

--刪除索引idx_emp_ename

drop index idx_emp_ename;

合理使用索引提公升查詢效率:

-為經常出現在where子句中的列建立索引。

-為經常出現在order by、destinct後面的字段建立索引。如果建立的是復合索引,索引的字段順序要和這些關鍵字後面的字段順序一致。

-為經常作為表的連線條件的列上建立索引。

-不要在經常做dml操作的表上建立索引。

-不要在小表上建立索引。

-限制表上的索引數目,索引並不是越多越好。

-刪除很少被使用的、不合理的索引。

約束的型別:

--約束條件包括:

-非空約束 not null

-唯一性約束  unique

可以保證表中的該字段的值,任何一條記錄都不可以重複,null除外。

新增唯一性約束??

-在建表之後增加唯一性約束條件:

alter table employee add constraint employee_name_uk unique(name);

-主鍵約束:

主鍵約束條件從功能上看相當於非空且唯一的組合。

主鍵字段可以是單字段或多字段組合,即:在主鍵約束下的單字段或者多欄位組合上不允許有空值,也不允許有重複值。

主鍵可以用來在表中唯一的確定一行資料

乙個表上只允許建立乙個主鍵,而其他約束條件則沒有明確的個數限制。

-主鍵選取的原則:

主鍵應是對系統無意義的資料。

永遠不要更新主鍵,讓主鍵除了唯一標識一行之外,再無其他用途。

主鍵不應包含動態變化的資料,如時間戳。

主鍵應自動生成,不要人為干預,以免使它帶有除了唯一標識一行以外的意義。

主鍵盡量建立在單列上。

-外來鍵約束:

外來鍵約束條件定義在兩個表的字段或乙個表的兩個欄位上,用於保證相關兩個欄位的關係。

-檢查約束:

資料庫程式設計 8 序列 索引

建立序列 按照一定的隊則自動增加 減少數字的一種資料庫物件 create sequences 序列名 increment by n 1 1 start with n maxvalue n minvalue n cycle nocycle cache nocache 例子 建立乙個序列 test 起始...

Oracle資料庫精講(七)序列 索引 同義詞

序列 模擬自增 本質就是記憶體中的陣列,預設長度為20 建立序列 create sequene 序列名 increment by 步長 start with 起始值 maxvalue nomaxvalue minvalue nominvalue cycle nocycle cache n no ca...

Oracle資料庫的約束,序列,索引

約束 1 概念 也叫完整性約束條件。是資料表中的一些限制條件,當資料表中的資料發生變化時,必須遵循 這些限制條件,不遵循,不能進行dml操作。2 分類 1 非空約束 not null 簡稱un 2 唯一性約束 unique 簡稱uk 3 主鍵約束 primary key 簡稱pk 4 外來鍵約束 f...