程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle(一)--)數據庫對象詳解(文字解釋,先有個小理解~)

Oracle(一)--)數據庫對象詳解(文字解釋,先有個小理解~)

編輯: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_toys start with 10 increment by 10 maxvalue 500 minvalue 10 nocycle cache 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 AS SELECT * 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 AS SELECT * 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 AS SELECT * 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_INDEXES select * from USER_INDEXES;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved