公有同義詞可被所有的數據庫用戶訪問。
私有同義詞只能在其模式內訪問,且不能與當前模式的對象同名。
創建或替換現有同義詞create or replace synonym emp_syn for scott.emp;
刪除同義詞
drop synonym emp; drop public synonym emp_syn
使用同義詞
Create public synonym Newer for scott.emp2; Select * from Newer ;
Create sequence 序列名 Start with 1 --指序列開始大小,默認為1 Increment by 1 --每次的增量,默認為1 Maxvalue 2000 --序列的最大數 Minvalue 1 --序列的最小數 Nocycle --當序列最大了將不再生成整數(默認) Cache 10; --保留在內存中整數的個數,默認20
注意:序列在使用的時候,如果給的是主鍵,為防止出現不連續的情況,應該設置為NOCACHE。
從user_sequences中查出所有的序列信息。
select * from user_sequences;
通過序列的偽列來訪問序列的值 1.NEXTVAL 返回序列的下一個值 2.CURRVAL 返回序列的當前值
注意:序列在使用的時候,如果給的是主鍵,為防止出現不連續的情況,應該設置為NOCACHE。
INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ‘TWENTY’, 25); INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ’MAGIC PENCIL’, 75); --toys_seq.NEXTVAL 指定序列的下一個值
SELECT toys_seq.CURRVAL FROM dual; --檢索序列的當前值
使用ALTER SEQUENCE語句修改序列,不能更改序列的START WITH參數
ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;
使用DROP SEQUENCE語句刪除序列
DROP SEQUENCE toys_seq;
CREATE VIEW stud_view AS SELECT studno, studname, subno FROM Stud_details;
通過這個視圖,查詢到的結果:
CREATE [OR REPLACE] [FORCE] VIEW view_name [(alias[, alias]...)] AS select_statement [WITH CHECK OPTION][CONSTRAINT C_NAME] [WITH READ ONLY]; --禁止對表進行更新刪除操作 --W ITH CHECK OPTION CONSTRAINT _NAME :表示增加一個檢查約束,INSERT和UPDATE時候必須要求: --INSERT時候要求插入的數據必須符合定義時候設置的where條件一致,UPDATE 時候只能改除where條件列以外的其他數據列或者修改的條件列的值符合where條件 --
使用 WITH CHECK OPTION 選項創建視圖
create or replace view pause_view as select * from order_master WHERE ostatus = 'p' with check option constaint chk_pv;
使用 ORDER BY 子句創建視圖
create or replace view ord_ven as select * from vendor_master order by venname;
聯接視圖:兩個表的結果
create view Stud_sub_view as select Studno, Studname, Submrks, Subname from Stud_details, Sub_Details where Stud_details.Subno=Sub_details.Subno;
創建外聯接視圖
CREATE VIEW ven_ord_outj_view AS SELECT vm.vencode, venname, orderno, odate, ostatus FROM vendor_master vm, order_master om WHERE vm.vencode = om.vencode(+);
等同於
SELECT vm.vencode, venname, orderno, odate, ostatus FROM vendor_master vm LEFT OUTER JOIN order_master om ON vm.vencode = om.vencode;
因為 Studno 既是Stud_details 中的主鍵,也是聯接結果中的主鍵,因此Stud_details是鍵保留表
CREATE VIEW item_view AS SELECT itemcode, LOWER(itemdesc) item_desc FROM itemfile;
DROP VIEW toys_view;
索引的原理:索引的工作原理是與一個叫做ROWID的概念緊密相關的,Oracle在創建數據表時,默認會為每個數據表建立一個隱含字段,叫ROWID。在向數據表中插入記錄時,系統將自動為每條記錄分配惟一的一個ROWID號,利用這個ROWID號,就可以快速定位到記錄。
CREATE INDEX item_index ON itemfile (itemcode) TABLESPACE index_tbs;
重建索引
ALTER INDEX item_index REBUILD;
刪除索引
DROP INDEX item_index;
CREATE UNIQUE INDEX item_index ON itemfile (itemcode);
CREATE INDEX comp_index ON itemfile(p_category, itemrate);
CREATE INDEX rev_index ON itemfile (itemcode) REVERSE;
ALTER INDEX rev_index REBUID NOREVERSE;
CREATE BITMAP INDEX bit_index ON order_master (orderno);
CREATE TABLE ind_org_tab ( vencode NUMBER(4) PRIMARY KEY, venname VARCHAR2(20) ) ORGANIZATION INDEX;
普通表與索引組織表的比較
普通表
索引組織表
ROWID 唯一地標識行
主鍵唯一地標識行
隱式的 ROWID 列
沒有隱式的 ROWID 列
基於 ROWID 的訪問
基於主鍵的訪問
順序掃描返回所有行
完全索引掃描返回所有行,並按主鍵順序排列
支持分區
不支持分區
CREATE INDEX lowercase_idx ON toys (LOWER(toyname));
SELECT toyid FROM toys WHERE LOWER(toyname)='doll';
SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME FROM USER_IND_COLUMNS ORDER BY INDEX_NAME, COLUMN_POSITION;