1. 程式人生 > >Oracle 基本語法、觸發器、視圖

Oracle 基本語法、觸發器、視圖

test source lse proc a-z 輸入 oracl href conn

參考文章:https://www.cnblogs.com/linjiqin/category/349944.html

數據庫分類

1.小型數據庫:access、foxbase

2.中型數據庫:inormix、sqlserver、mysql

3.大型數據庫:sybase、db2、oracle

項目合理的使用數據庫,參考原則:

1.項目規模

2.負載量、即用戶量

3.成本

4.安全

小型數庫:

1.負載小,大概100人左右

2.案例:留言板、信息管理系統

3.成本低、千元左右、安全性低

中型數據庫:

1.負載量:日訪問5000 - 10000

2.成本:萬元內

大型數據庫:

1.海量負載,可以處理海量數據(sybase < oracle < db2 數據處理能力)

2.安全性高,價格昂貴

Oracle 入門

1.oracle 默認的管理員 sys 、sysdba

創建用戶: create user 用戶名 identified by 密碼;

create user test identified by test;

修改用戶密碼: alter user 用戶名 identified by 新密碼;

alter user test identified by 123456;

刪除用戶:drop user 用戶名【cascade】;

drop user test;

給用戶賦予角色

grant connect,resource to test; 

不同用戶之間的對象權限授權

grant select on scott.emp to test;
revoke select on scott.emp from test;

Oracle 命名規則

1.必須以字母開頭

2.長度不能超過30個字符

3.不能使用保留字

4.只能使用字符:a-z A-Z 0-9 # $

數據類型:

char 固定長度

varchar2(N) 長度可變

number 數字類型

date

timestamp

blob 二進制數據

Oracle 分頁:

分頁通過rownum 字段實現

select e.*,rownum rw from  emp e where rownum< 5;

存儲過程

存儲過程執行特定的操作,可以指定輸入參數、輸出參數

create procedure sp_update(empno number) IS
begin
  update emp set ename = baizhuang where empno = empno;
  end;
exec sp_update(7369);
commit;

視圖

視圖是一張虛擬表,內容有查詢定義,視圖是動態生成的,並不是真實存在的

--定義視圖
create view v_emp as
select * from emp;
--scott權限不足定義視圖,轉換為sys 給scott授權
grant resource,dba to scott;
--使用視圖
select * from v_emp;

觸發器

觸發器是在定義的條件成立時,觸發器裏面的定義語句就會自動執行, 觸發器不需要人為調用。觸發器分為:語句級觸發器、行級觸發器

create or replace tigger t_emp before delete
on emp
for each row
begin
  insert into log(msg) values(‘emp 又執行刪除任務了‘);
end;

語句清單:

--c創建用戶 test 密碼 test
create user test identified by test;
--修改密碼為 123456
alter user test identified by 123456;
--刪除用戶 
drop user test;
--權限 保留用戶權限(connect、resource、dba)、對象權限(insert、delete、pudate、select)
--獲取 oracle 數據庫對象
SELECT * FROM Dba_Object_Size;
--給用戶賦予角色
grant connect,resource to test; 
--權限傳遞 ,不同用戶之間授權訪問表
grant select on scott.emp to test;
--收回權限
revoke select on scott.emp from test;

select * from emp;
select * from dept;
select count(*),avg(sal)  from emp;
--oracle 分頁通過 rownum 
select e.*,rownum from emp e;
--對 emp 分頁
select e.*,rownum rw from  emp e where rownum< 5;

--建立存儲過程
create procedure sp_update(empno number) IS
begin
  update emp set ename = baizhuang where empno = empno;
  end;

--執行存儲過程
exec sp_update(7369);
commit;
--測試sql
update emp set ename = BA where empno = 7369;
--定義視圖
create view v_emp as
select * from emp;
--scott權限不足定義視圖,轉換為sys 給scott授權
grant resource,dba to scott;
--使用視圖
select * from v_emp;
--使用觸發器
create or replace trigger t_emp before delete
on emp
for each row
  begin
    insert into log(msg) values(emp 又執行刪除任務了);
    end;
    
--創建 log 表
create table log(
   msg varchar2(20)
);
--執行刪除 出發 tigger
delete from emp where empno = 7369;

Oracle 基本語法、觸發器、視圖