數據庫對象

同義詞是先用數據庫對象的別名;序列用於生成惟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
相關文章
相關標籤/搜索