oracle數據庫SQL開發之序列,索引,同義詞
一、序列
– 序列是按照一定規則能自動增加/減少數字的一種數據庫對象。
– 通常可以使用序列自動地生成主鍵值。
(一)創建序列
例:創建序列test_seq,起始值爲10,每次增長2,最大值100,最小值9,循環序列,每次緩存10
create sequwnce te77st_seq
start with 10 -- 序列從10 開始
increment by 2 -- 序列每次增加2
maxvalue 100 -- 序列最大值100
minvalue 9 -- 序列最小值9
cycle -- 序列循環, 每次增加2, 一直到100 後回到9 從新開始
cache 10 ; -- 緩存中序列值個數爲10
(二)序列屬性
• nextval和currval僞列 必須先執行有nextval語句的sql語句,使序列動起來
– currval:表示序列返回的當前值;
– nextval:表示序列返回的下一個值;
– currval在被引用之前,必須先使用nextval來產生一個序列值;
– 可用語句 序列名.currval或 序列名.nextval來訪問序列;
(三)序列的使用
– 創建序列student_seq:
create sequence student_seq
start with 1
increment by 1;
– 使用序列student_seq生成student表中sid列插入值:(作用體現在這裏)
insert into student
values (student_seq.nextval, 'Scott', 'Computer Science', 11);
(四)序列的修改
– 正確修改
alter sequence test_seq
increment by 4 --序列每次增加4
maxvalue 1000 -- 序列最大值1000 (注意原始序列的最大值);
nocache ; -- 不設定緩存
rowid
– 是一個僞列,系統自動產生。
– rowid能唯一標示每一條數據庫行記錄的物理地址,通過
– rowid 能快速定位到一條行記錄。– 快速定位記錄,使用rowid檢索及操作數據,效率最快
二、索引
索引( index) • 建議索引命名格式:idx_tablename_columnname
– 是對數據庫表中一個或多個列的值進行排序的一種數據庫對象。
– 在數據庫中,通過索引可以加速對錶的查詢速度;
(一)索引的分類
1…單列索引:
– 索引建立在表中的某一列上。
2.複合索引:
– 索引建立在表中某幾列的組合上
(二)索引的創建
1.自動創建:當有primary key 或者 unique 約束時,會自動創建;
2.手動創建:
-在emp表的ename字段上創建索引.
SQL>create index idx_emp_ename on emp (ename);
-在emp表的deptno和job的組合上創建索引
SQL>create index idx_emp_deptnojob on emp (deptno,job);
(三)索引的缺點-----佔用空間,降低DML的操作速度
(四)刪除索引 drop index idx_tablename_columnname
三、同義詞
– 同義詞( synonym ) 是指向數據庫對象(如:表、視圖、序列、存儲過程等)的數據庫指針。
-創建employees表的別名。
create (public/private) s_emp
for hr.employees;
-刪除同義詞 – 只有數據庫管理員才擁有公有同義詞的創建和刪除權限。
drop synonym s_emp;