資料庫對象簡介
Oracle 資料庫對象又稱模式對象
資料庫對象是邏輯結構的集合,最基本的資料庫對象是表
其他資料庫對象包括:

同義詞是現有對象的一個别名。
簡化SQL語句
隐藏對象的名稱和所有者
提供對對象的公共通路
同義詞共有兩種類型:
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;
CREATE SYNONYM staff FOR SCOTT.emp;
CREATE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;
CREATE OR REPLACE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;
DROP SYNONYM staff;
DROP PUBLIC SYNONYM pub_emp;
序列
序列是用于生成唯一、連續序号的對象
序列可以是升序的,也可以是降序的
使用CREATE SEQUENCE語句建立序列
依次為:
序列案例
create table t_testseq
(
id number primary key,
name varchar2(10) NOT NULL
);
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');
SELECT seq_value.CURRVAL FROM dual;
更改和删除序列
ALTER SEQUENCE SEQ_VALUE MAXVALUE 5000 CYCLE;
DROP SEQUENCE SEQ_VALUE;
視圖
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno and dname= ‘ SALES ‘;
--檢視目前使用者的系統權限
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;
select * from dept_emp where dname= ‘ SALES ‘;
視圖以經過定制的方式顯示來自一個或多個表的資料
視圖可以視為“虛拟表”或“存儲的查詢”
建立視圖所依據的表稱為“基表”
視圖的優點有:
提供了另外一種級别的表安全性
隐藏的資料的複雜性
簡化的使用者的SQL指令
隔離基表結構的改變
通過重命名列,從另一個角度提供資料
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;
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 子句,則将無法更新視圖
如果視圖包含僞列或表達式,則将無法更新視圖
update dept_emp
set ename = 'TOM'
WHERE empno = 7521;
Select ename from dept_emp where empno = 7521
Select ename from emp where empno = 7521
CREATE OR REPLACE [FORCE] VIEW
view_name [(alias[, alias]...)]
AS
select_statement
[WITH CHECK OPTION]
[WITH READ ONLY];
DROP VIEW view_name;
索引概念
索引是與表相關的一個可選結構
用以提高 SQL 語句執行的性能減少磁盤I/O
在邏輯上和實體上都獨立于表的資料
Oracle 自動維護索引
索引有各種類型,除了标準索引外,還有一些特殊類型的索引:
唯一索引
組合索引
反向鍵索引
位圖索引
管理索引
CREATE INDEX 索引名 ON 表名 (索引字段)
CREATE INDEX idx_ename ON emp (ename)
ALTER INDEX 索引名 REBUILD [REVERSE][NOREVERSE] ;
ALTER INDEX idx_ename REBUILD;
DROP INDEX 索引名;
DROP INDEX idx_ename;
測試索引
create table t_testseq
(
id number,
name varchar2(10)
);
create sequence seq_value
start with 1
increment by 1;
BEGIN
FOR v_temp in 1..1000000 LOOP
INSERT INTO t_testseq
values(seq_value.nextval,’abcde’);
END LOOP;
END;
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