Oracle 基本語法、觸發器、視圖
阿新 • • 發佈:2019-03-13
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 基本語法、觸發器、視圖