天天看點

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

資料庫對象簡介

Oracle 資料庫對象又稱模式對象

資料庫對象是邏輯結構的集合,最基本的資料庫對象是表

其他資料庫對象包括:

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

同義詞是現有對象的一個别名。

  簡化SQL語句

  隐藏對象的名稱和所有者

  提供對對象的公共通路

同義詞共有兩種類型:

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
CREATE  USER  test  IDENTIFIED  BY  test;
GRANT  CONNECT , CREATE  SYNONYM TO test;
GRANT  SELECT   ON   SCOTT.EMP  TO test;
GRANT  DELETE  ON   SCOTT.EMP TO test;
GRANT  UPDATE  ON  SCOTT.EMP TO test;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
CREATE  SYNONYM   staff   FOR  SCOTT.emp;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
CREATE   PUBLIC   SYNONYM  pub_emp FOR  SCOTT.emp;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
CREATE OR REPLACE PUBLIC SYNONYM  pub_emp FOR SCOTT.emp;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
DROP SYNONYM   staff; 
DROP PUBLIC SYNONYM   pub_emp;       
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

序列

序列是用于生成唯一、連續序号的對象

序列可以是升序的,也可以是降序的

使用CREATE SEQUENCE語句建立序列

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

依次為:

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

序列案例

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
create table  t_testseq
(
    id  number  primary key,
    name varchar2(10)  NOT NULL  
);      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
create  sequence  seq_value
Start with   1
Increment  by  1;      

通路序列

通過序列的僞列來通路序列的值

NEXTVAL 傳回序列的下一個值

CURRVAL 傳回序列的目前值

INSERT INTO  t_testseq 
     VALUES (seq_value.NEXTVAL, 'tom')
INSERT INTO  t_testseq
     VALUES (seq_value.NEXTVAL, 'jime');      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
SELECT  seq_value.CURRVAL FROM dual;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

更改和删除序列

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
ALTER SEQUENCE  SEQ_VALUE  MAXVALUE   5000   CYCLE;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
DROP   SEQUENCE   SEQ_VALUE;      

 視圖

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno  and  dname= ‘ SALES ‘;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
--檢視目前使用者的系統權限
select * from user_sys_privs;
--檢視目前使用者角色權限
select * from user_role_privs;
--檢視某個角色權限
select * from role_sys_privs where role =‘RESOURCE’;

--建立視圖
create view dept_emp
as
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
select * from dept_emp  where dname= ‘ SALES ‘;      

視圖以經過定制的方式顯示來自一個或多個表的資料

視圖可以視為“虛拟表”或“存儲的查詢”

建立視圖所依據的表稱為“基表”

視圖的優點有:

  提供了另外一種級别的表安全性

  隐藏的資料的複雜性

  簡化的使用者的SQL指令

  隔離基表結構的改變

  通過重命名列,從另一個角度提供資料

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
create view dept_emp_order
as
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno  order by dept.deptno;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
create view dept_sal_avg
as
select dname,avg(sal) avg_sal
from dept,emp
where dept.deptno = emp.deptno  group by dname;      

視圖上的DML語句

在視圖上也可以使用修改資料的DML語句,如

INSERT、UPDATE和DELETE

視圖上的DML語句有如下限制:

隻能修改一個底層的基表

如果修改違反了基表的限制條件,則無法更新視圖

如果視圖包含連接配接操作符、DISTINCT 關鍵字、集合操作符、聚合函數或 GROUP BY 子句,則将無法更新視圖

如果視圖包含僞列或表達式,則将無法更新視圖

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
update dept_emp
set ename = 'TOM'
WHERE empno = 7521;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Select  ename from  dept_emp where empno = 7521      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Select  ename from emp where empno = 7521      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
CREATE  OR REPLACE   [FORCE] VIEW   
  view_name [(alias[, alias]...)] 
  AS  
  select_statement
  [WITH CHECK OPTION]
  [WITH READ ONLY];      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
DROP VIEW   view_name;       

索引概念

索引是與表相關的一個可選結構

用以提高 SQL 語句執行的性能減少磁盤I/O

在邏輯上和實體上都獨立于表的資料

Oracle 自動維護索引

索引有各種類型,除了标準索引外,還有一些特殊類型的索引:

  唯一索引

  組合索引

  反向鍵索引

  位圖索引

 管理索引

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
CREATE  INDEX    索引名    ON   表名 (索引字段)      
CREATE  INDEX    idx_ename  ON   emp (ename)      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
ALTER  INDEX   索引名  REBUILD [REVERSE][NOREVERSE] ;       
ALTER  INDEX  idx_ename  REBUILD;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
DROP INDEX   索引名;       
DROP INDEX   idx_ename;       
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念

測試索引

Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
create table t_testseq
(
  id number,
  name varchar2(10)
);      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
create sequence seq_value
start with 1
increment by 1;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
BEGIN
    FOR  v_temp  in  1..1000000  LOOP
    INSERT  INTO  t_testseq
     values(seq_value.nextval,’abcde’);
    END LOOP;
END;      
Oracle資料庫對象,同義詞、序列、視圖、索引視圖上的DML語句索引概念
Set  timing  on;      --sqlplus環境下設定      
--正常查詢
Select * from t_testseq  where  id = 28900;
--建立索引,再查詢
Create  index  idx_testseq_id  on t_testseq(id);      
Select  *  from  t_testseq  where  id = 28900;      

總結

  同義詞是現有資料庫對象的别名

  序列用于生成唯一、連續的序号

  視圖是基于一個或多個表的虛拟表

  索引是與表相關的一個可選結構,用于提高 SQL 語句執行的性能

  索引類型有标準索引、唯一索引、反向鍵索引、位圖索引

轉載于:https://www.cnblogs.com/lzw123-/p/9796547.html