Oracle整理筆記(三)

2021-10-11 02:40:16 字數 4167 閱讀 4352

day04

資料庫物件

同義詞:就是給資料庫物件乙個別名。

序列:oracle 中實現增長的物件。

檢視:預定義的查詢,作為表一樣的查詢使用,是一張虛擬表。

索引:對資料庫表中的某些列進行排序,便於提高查詢效率。

同義詞

在 oracle 中對使用者的管理是使用許可權的方式來管理的,,如果我們想使用資料庫,我們就必須得有許可權,如果是別人將許可權授予了我們,我們也是能對資料庫進行操作的,但是我們必須要在已授權的表的名稱前鍵入該錶所有者的名稱,所以每次寫就比較麻煩,有沒有簡化的方式呢?這裡我們可以建立 oracle 同義詞來解決這個問題!我們就可以直接使用同義詞來訪問對應的表。

總的來說,同義詞是現有物件的乙個別名,可以簡化 sql 語句,隱藏物件的名稱和所有者,提供對物件的公共訪問。

同義詞分為私有同義詞和共有同義詞:

(1)私有同義詞:擁有 create synonym 許可權的使用者(包括非管理員使用者)即可建立私有同義詞,建立的私有同義詞只能由當前使用者使用。

(2)公有同義詞:系統管理員可以建立公有同義詞,公有同義詞可以被所有使用者訪問。

1、system 賬號登入:建立 test_user 測試賬號,賦予許可權

–建立測試賬號

create user test_user identified by 123456;

–賦予測試賬號連線和資源建立相關許可權

grant connect,resource to test_user;

–賦予 test_user 賬號建立同義詞許可權

grant create public synonym to test_user;

–賦予 test_user 賬號刪除同義詞許可權

grant drop public synonym to test_user;

2、student 賬號登入:讓 test_user 獲得 student 的 t_student 的查詢許可權

grant select on t_student to test_user;

3、test_user 賬號登入:建立同義詞

create or replace public synonym syn_t_student

for student.t_student;

4、system 賬號登入:現在可查詢該同義詞是否建立成功:

select * from dba_synonyms

where table_owner = 『student』;

5、test_user 賬號登入:

(1)接下來可以直接在 test_user 中查詢該同義詞的資料

select * from syn_t_student;

(2)使用 test_user 連線,刪除同義詞

drop public synonym syn_t_student;

7、student 賬號登入:移除 t_student 上的 student 查詢許可權

revoke select on t_student from test_user;

序列

– 建立序列

create sequence seq_empno

start with 1

–初始值

increment by 1;

–增量– 序列中的下乙個值,從定義(start with)的值開始,呼叫了 nextval 之後, currval 會變成 nextval 的值

select seq_empno.nextval from dual;

– 獲取序列的當前值

select seq_empno.currval from dual;

檢視

查詢檢視沒有什麼限制, 插入/更新/刪除檢視的操作會受到一定的限制; 所有針對檢視的操作都會影響到檢視的基表; 為了防止使用者通過檢視間接修改基表的資料, 可以將檢視建立為唯讀檢視(帶上 with read only 選項)

優點:可以限制使用者只能通過檢視檢索資料。這樣就可以對終端使用者遮蔽建表時底層的基表。

可以將複雜的查詢儲存為檢視。可以對終端使用者遮蔽一定的複雜性。

限制某個檢視只能訪問基表中的部分列或者部分行的特定資料。這樣可以實現一定的安全性。

從多張基表中按一定的業務邏輯抽出使用者關心的部分,形成一張虛擬表。

缺點:1、檢視的操作最終都會轉換為對基表的操作,因此如果是對複雜的檢視的修改操作可能會失敗。

檢視分類:

1、簡單檢視

指基於單個表並且不包含函式或表示式的檢視,在該檢視上可以執行 dml 語句(即可執行增、刪、改操作)。

2、複雜檢視

指基於單個或者多個表或者包含函式、表示式或者分組資料的檢視,在該檢視上執行 dml 語句時必須要符合特定條件。注意:在定義複雜檢視時必須為函式或表示式定義別名

3、連線檢視

指基於多個表建立的檢視,一般來說不會在該檢視上執行 insert、update、delete 操作。課程內容頁

4、唯讀檢視

指只允許進行 select 操作的檢視,在該檢視時指定 with read only 選項。該檢視上不能執行 insert、update、delete 操作。

5、check 約束檢視

with check option 用於在檢視上定義 check 約束,即在該檢視上執行 insert 或 update 操作時,資料必須符合查詢結果

檢視操作

基本語法

create [or replace] view view_name [(column_name1[,column_name2…

asselect_statement

[with check option]

[with read only]

2、引數說明

create or replace:用於建立和修改檢視(or replace :若所建立的試圖已經存在,則替換舊檢視;)

with check option :用於建立限制資料訪問的檢視

with read only :用於建立唯讀檢視

建立檢視

–簡單檢視

create or replace view v_student

asselect * from stuinfo1;

對檢視資料進行增刪改查操作

–查詢select * from v_student;

–更新update v_student set v_student.age=15

where v_student.stuname=『唐僧』;

–查詢檢視(驗證檢視資料是否變化)

select * from v_student;

–查詢基表(驗證基本資料是否變化)

select * from stuinfo1;

–增加insert into v_student(stuid, stuname, ***, age, classno, stuaddress, grade, enroldate, idnumber)values (『sc201801005』, 『李四』, 『1』, 26, 『c201801』, 『福建省廈門市 *** 號』, 『2018』, to_date(『01-09-2018』, 『dd-mm-yyyy』),』 3503021992******xx』);

–查詢檢視(驗證檢視資料是否變化)

select * from v_student;

–查詢基表(驗證基本資料是否變化)

select * from stuinfo1;

–刪除delete from v_student where v_student.stuname=『李四』;

–查詢檢視(驗證檢視資料是否變化)

select * from v_student;

–查詢基表(驗證基本資料是否變化)

select * from stuinfo1;

– 刪除檢視

drop view v_student;

oracle筆記整理三 配置

1 oracle net配置 1 win下 開始 程式 oracle home name 網路管理 oracle net configuration assistant 2 建立監聽程式 如果選擇tcp ip協議進行監聽,要設定埠為1521 僅伺服器端 3 listener.ora檔案 該檔案每個伺...

Oracle使用者整理筆記

應用系統新上線時,為圖方便,使用了簡單的owner直接作為應用程式的資料庫連線配置,為安全考慮,最近對使用者做了整理,根據應用不同,分設了多個使用者。分類 1 主應用登陸使用者,為及時切換,授予了所有表 檢視的select update insert delete許可權。2 周邊應用,根據應用不同,...

Oracle資料庫筆記整理

select ename,lower ename from emp select ename,upper ename from emp select ename,substr ename,1,2 from emp select round 3.54159 from dual select round...