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...