一、序列sequence
sequence是Oracle資料庫中一種特殊的物件,能夠產生連續的整數值,可以為資料庫中多個物件共同使用,主要用于作為主鍵值,
1.創建序列
起始值 start with:1
步長:increment by:1
最大值:maxvalue:100
最小值:minvalue:1
回圈:cycle|nocycle
緩沖區:cache 20|nocache(默認20)
create sequence s1;
注: a) 各可選項位置不先后次序
b) 當increment by n為正數時,
默認maxvalue為: 1E+27 , 默認minvalue為: 1
當increment by n為負數時,
默認maxvalue為: -1 , 默認minvalue為: -1E+26
increment by必須為非零整數,
加不加NOMAXVALUE效果一樣,這本身是默認值
c) CACHE n可以每次預產生十五個,二十個,放到記憶體里,提高性能,
不寫默認CACHE 20個
d) cycle用于回圈,到了最大數后回圈(不建議使用)
2.使用序列
nextval:取序列下一個值
currval:去序列當前值
select s1.nextval from dual;
select s1.currval from dual;
create sequence s2
start with 100
increment by 2;
select s2.nextval from dual;
select s2.currval from dual;
注:先執行nextval才會啟用,啟用后才能查詢到當前值
//序列和表的關系
insert into s_stu(id,name)
values(s2.nextval,'rui');
3.修改序列
ALTER SEQUENCE sequence
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
注: sequence不能修改起始值
alter sequence s_stu_id
increment by -2;
4.洗掉序列
drop sequence sequenceName
二、視圖view
1.視圖
視圖是一個或多個表的部分資料,它可以像表一樣進行CRUD(Create、Retrieve、Update、Delete)操作,但沒有具體的存盤資料結構,它以一個select陳述句的形式存在資料庫中,
本質: 一條有名字的select陳述句
表現: 一到多張表的部分內容
作用:提高檢索的效率
表 10000條資料
經常用的10條資料查詢出來放在視圖中, 從資料字典表中查詢創建的視圖:
select view_name
from user_views;
2.創建視圖
create view 視圖名字
as 子查詢
eg:
//授給briup創建視圖的權限
conn system/system; grant create view to briup;
create view v1
as
select id,last_name,salary,dept_id
from s_emp
where dept_id=41;
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [constraint 約束名]]
[WITH READ ONLY]
注: a) or replace: 如有相同名字的視圖物件,替換,
b) force: 如subquery中源表不存在,先創建視圖對像,這時視圖物件雖創建,但不能正常使用,
默認值為noforce, 即源表不存在,不能正常創建視圖,
c) with check option: 表示可以進行插入、更新和洗掉操作,
但應該滿足WHERE子句的條件,
d) 視圖的查詢可以使用復雜的SELECT語法,包括連接/分組查詢和子查詢
e) 在沒有WITH CHECK OPTION和WITH READ ONLY的情況下,查詢中不能使用ORDER BY子句
f) 如果沒有為WITH CHECK OPTION約束命名,系統會自動為之命名,形式為SYS_Cn eg: 創建一視圖:
create or replace view a
as
select id from s_emp
where id<9;
g) with read only: 只允許進行select操作,
注: 當對建立視圖的那張真正的表進行修改(插入、更新和洗掉)后,
通過視圖查看到的資料是修改以后的資料,
3.視圖分類
1) 簡單視圖
資料來源于一個表, 不包含函式以及進行分組,
可以進行DML操作;
2) 復雜視圖
資料來源于多個表,
包含函式以及進行分組,
不可以進行DML操作;
4.修改視圖
使用or replace直接覆寫 替換
5.洗掉視圖
drop view view_name;
三、索引index
1.索引
索引是Oracle中一種的物件,資料庫用其以加快檢索速度,幾乎所有的關系型資料庫中都采用b*tree類 型索引,也是被最多使用的,其樹結構與二叉樹比較類似,根據rowid快速定位所訪問的記錄,
相當于書的目錄是一樣的, 2、創建索引
1) 自動創建索引
在創建主鍵約束、唯一鍵約束
以及使主鍵約束、唯一鍵約束
生效時會自動創建唯一索引,
select user_indexes; 2)手動創建索引
create index in1
on s_stu(gender); 3.使用索引
1)列頻繁用于where子句或連接條件中
2)列的取值范圍較廣
3)表很大,記錄數量較多
4)查詢回傳的結果占總記錄數的百分比在2~4%內
5)索引并不是越多越好 4、洗掉索引
DROP INDEX index_name 5.查詢自動索引
select index_name
from user_indexes
where table_name='S_STU';
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1156.html
標籤:Oracle
上一篇:Oracle基礎(五)之DML陳述句(增刪改)、改變表
下一篇:Oracle重做日志和日志挖掘
