Oracle(一)--> 資料庫物件詳解(文字解釋,先有個小理解~),oracle詳解
----資料庫物件:邏輯結構的集合 ----一、同義字:現有對象的別名/*作用: 簡化SQL語句隱藏對象的名稱和所有者提供對對象的公用訪問分類:*/--公有同義字:可以被所有的資料庫使用者訪問,本機物件和公有對象同名時,本機物件優先create public synonym syn1 for scott.emp;select * from syn1;--私人同義字:只能被當前模式訪問,且不能與當前模式下的對象同名create synonym emp1 for scott.emp;select * from emp1;/*同義字建立的條件:在自身的模式下建立私人同義字的話,使用者需要具有create synonym系統許可權,在其他的模式建立私人同義字,使用者需要具有create any synonym系統許可權公有同義字:使用者需要具有create public synonym系統許可權*/--建立或替換現有的同義字create or replace synonym emp1 for scott.books;
select * from emp1;--刪除私人同義字drop synonym emp1;--刪除公有同義字drop public synonym syn1;--oracle表中的列實現自增:--1 sys_guid: global unique identified:全域唯一標識,用於標識一行資料,32位的唯一字串select sys_guid() from dual;
二、 序列(與觸發器連用)--序列:用於產生唯一、連續序號的資料庫物件--序列可以是升序的,也可以是降序的create sequence seq_toysstart with 10increment by 10maxvalue 500minvalue 10nocyclecache 10;/*通過序列的偽列來訪問序列的值NEXTVAL 返回序列的下一個值CURRVAL 返回序列的當前值*/create table toys(toyid int primary key,toyname char(20),toyprice float);insert into toys values(seq_toys.nextval,'熊大',20);select * from toys;select seq_toys.CURRVAL from dual;insert into toys values(seq_toys.nextval,'熊二',21);--使用ALTER SEQUENCE語句修改序列,不能更改序列的START WITH參數
alter sequence seq_toys increment by 20 maxvalue 1000;
--刪除序列drop sequence seq_toys;
三:視圖:視圖以經過定製的方式顯示來自一個或多個表的資料/*視圖的優點有:提供了另外一種層級的表安全性隱藏了資料的複雜性簡化了使用者的SQL命令隔離基表結構的改變通過重新命名列,從另一個角度提供資料
CREATE [OR REPLACE] [FORCE] VIEW view_name [(alias[, alias]...)] AS select_statement [WITH CHECK OPTION] [WITH READ ONLY];or replace:如果視圖存在則替換,否則建立新的視圖force:無論基表是否存在都建立視圖with check option:一旦使用該限制,對視圖增加或者修改資料的時候,必須滿足子查詢的條件with read only:設定視圖唯讀,不能通過視圖更改資料,這樣的視圖具有更高的安全性*/
CREATE OR REPLACE VIEW v_stu ASSELECT * FROM students WHERE sdept = 'Art'WITH CHECK OPTION ;
select * from v_stu;select * from students;
insert into v_stu values('20030105','July','F',null,'Art',to_date('1996-12-11','yyyy-mm-dd'));
CREATE OR REPLACE VIEW v_stu ASSELECT * FROM students WHERE sdept = 'Art' ;
--若沒有此選項,可以將不合格記錄(在試圖中)改為視圖中不可見記錄insert into v_stu values('20030106','Juli','F',null,'Maths',to_date('1996-12-11','yyyy-mm-dd'));
--使用 ORDER BY 子句建立視圖CREATE OR REPLACE VIEW v_stusorted ASSELECT * FROM students ORDER BY sdept;
select * from v_stusorted--force :帶有錯誤的視圖create force view v_temp as select * from t_temp;select * from v_temp;
create table t_temp (id varchar2(10),name varchar2(20));insert into t_temp values('1','a');--視圖中可以使用單行函數、分組函數和運算式---刪除視圖drop view v_temp;--如何保證對視圖的修改最後映射到唯一基表資料--鍵保留表:基表的主鍵也是視圖的主鍵
四、索引:與表相關的一個可選結構/*主要作用:用以提高 SQL 陳述式執行的效能減少磁碟I/O
特點:在邏輯上和物理上都獨立於表的資料Oracle 自動維護索引
建立索引有以下兩種方式:1手工建立2 自動建立:主鍵 唯一約束*/
create index index_stu on students(sname);--重建索引--rebuilD 效能優於drop create 語句alter index index_stu rebuild;--刪除索引drop index index_stu;--唯一索引create unique index index_name on students(sname);
--複合式索引:作用如果 SQL 陳述式的 WHERE 子句中引用了複合式索引的所有列或大多數列,則可以提高檢索速度create index index_ss on students(sage,sdept);
--USER_INDEXESselect * from USER_INDEXES;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。