同義詞是先用數據庫對象的別名;序列用於生成惟1、連續的序號;數據庫
視圖是基於一個或多個表的虛擬表;索引是與表相關的一個可選結構,用於提升SQL語句執行的性能安全
1、數據庫對象:oracle
模式對象:性能
數據庫對象是邏輯結構的集合,最基本的數據庫對象是表;spa
其餘對象包括:create增、drop刪、改altercode
同義詞、序列、視圖、索引對象
一、同義詞:blog
①、 現有對象的一個別名:索引
簡化SQL語句,隱藏對象的名稱和全部者,提供對對象的公共訪問;事務
②、類型:
私有同義詞:
只能在其模式下內訪問,且不能與當前模式的對象同名(當前用戶下使用);
公有同義詞:
可被全部的數據庫用戶訪問。只能是管理員用戶建立。
③、私有:synonym(system身份登陸建立)
---建立用戶 CREATE USER test IDENTIFIED BY 123456;--建立一個用戶名爲 test 密碼爲123456的用戶 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;--增 select * from scott.emp; create synonym staff for scott.emp;--起別名--提升安全性 select * from staff;---私有同義詞,只能誰建立誰訪問
④、公有:public
須要sys或者system用戶來建立
--一sys或system身份登陸,建立公有同義詞--誰都能查 create public synonym emps for scott.emp; select * from emps;
修改和刪除的原則是:誰建立誰修改、刪除
2、序列:
一、Oracle是不支持自增加的;
①、序列是用於生成惟1、連續序號的對象;
②、序列能夠是升序,也能夠是降序的;
③、建立:create sequence(前三個必須寫)
二、訪問序列:
nextval:返回序列的下一個值;
currval:返回序列的當前值
---建立序列(至關於計數器,與表無關) create sequence seq_student start with 1 increment by 1; create table stu( ssid int primary key, sname varchar(10) ) --給ssid賦值爲序列的值 insert into stu values(seq_student.nextval,'李四');---nextval 下一個值 insert into stu values(seq_student.nextval,'張三'); select * from stu select seq_student.currval from dual;-- currval 當前值
注意:
序列與表無任何關係!!!
三、當出現異常須要修改和刪除的序列時,友情提示:刪除從新建!
3、視圖:
一、視圖以通過定製的方式顯示來自一個或多個表的數據;
能夠視爲「虛擬表」或「存儲的查詢」;
二、建立視圖所依據的表稱爲「基表」;
三、優勢:
提供了另一種級別的表安全性;
隱藏的數據的複雜性;
簡化的用戶的SQL命令;
隔離基表結構的改變;
經過重命名列,從另外一個角度提供數據。
四、
--建立視圖(scott下,將查詢的結果封裝到個視圖裏面) select * from emp select * from dept select * from emp join dept on emp.deptno=dept.deptno; --受權(system下給scott用戶授予建立視圖的權利) grant create view to scott; create view emp_dept as (select empno,ename,job,mgr,sal,comm,emp.deptno,dname,loc from emp join dept on emp.deptno=dept.deptno); --查詢視圖 select * from emp_dept
五、在視圖上能夠使用修改數據的DML語句:
不過有以下限制:
只能修改一個底層的基表;
若是修改違反了基表的約束條件,則沒法更新視圖;
若是視圖包含鏈接數據庫、去重關鍵字等,則將沒法更新視圖;
若是視圖包含僞列或表達式,則將沒法更新視圖
(總結:能夠修改數據,但儘可能不要在視圖上修改!!!在基表上改)
六、使用create or replace語句修改視圖定義(儘可能不要如此麻煩)
CREATE OR REPLACE [FORCE] VIEW view_name [(alias[, alias]...)] AS select_statement [WITH CHECK OPTION] [WITH READ ONLY];
4、索引:
一、索引是與表相關的一個可選結構;
用以提升SQL語句執行的性能;
在邏輯上和物理上都獨立於表的數據;
Oracle自動維護索引
二、
--建立表 create table t_testseq ( id number, name varchar2(10) ); --建立序列 create sequence seq_value start with 1 increment by 1; -- oracle裏面事務須要手動提交事務 select * from t_testseq where id=50000 -- 0.023 --建立索引 CREATE INDEX 索引名 ON 表名 (索引字段) create index t_testseq on t_testseq(id) -- 0.015