程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle基礎學習5--Oracle權限之”角色”

Oracle基礎學習5--Oracle權限之”角色”

編輯:Oracle教程

  任何與權限相關的東西都少不了”角色”的概念,Java如此,.Net如此,Oracle當然也不例外。

  角色其實就是權限的集合,將多個權限打包到一個角色中,這樣每個角色有特定的權限。當需要給某個對象賦予某種權限時,就找到具有相應權限的角色,然後將它加到這個集合當中。下面就簡單看看Oracle中角色的運用。

  上篇文章講到,為了給多用戶授予各種權限,我們用到了“權限傳遞”來代替給用戶們一個個授權,簡化了授權過程。但這種方式較之用“角色”方式授權還是有很多不便。

  其實“角色”與普通用戶無太大差別,不過一個是“類”一個是“對象”而已。所以對“角色”的操作與對“普通用戶”的操作基本相同,如下:

  首先用系統用戶“sys”連接到Oracle,並創建“角色”myrole:

  \

  然後為角色—myrole授權:

  \

  創建一個新用戶“wangwu”,然後將角色-myrole授權給wangwu:

  \

  這樣用戶“wangwu”就擁有了myrole(多種權限的集合)中的所有權限。我們還可以吧myrole這個權限集合授權給任意的用戶,這樣,權限授予起來就方便多了。

  注:由於角色范圍太大,一旦為角色賦予了某項權限,那麼它下面所有的用戶都將擁有此權限,所以有些大的“權限”不能直接授予給角色,比如以前的unlimited tablespace就不能授予角色,不過到Oracle11g,試了一下可以授予給角色了:

\

  Oracle就講到這裡,下面是網上看到的,比較全的Oracle常用操作:

oracle用戶的權限管理
 
----sys Login------------
 1 創建表空間及臨時表空間 
create tablespace csdn1 datafile 'csdn1' size 30m autoextend on; 
create temporary tablespace csdn2 tempfile 'csdn2' size 30m autoextend on;   
2 創建用戶指定表空間及臨時表空間 
create user csdn identified by csdn default tablespace csdn1 temporary tablespace csdn2;   
3 授予用戶各種權利 
grant create session to csdn; 
grant unlimited tablespace to csdn; 
grant connect to csdn; grant resource to csdn; 
grant create sequence to csdn; grant create table to csdn;   
4 查詢當前用戶的權限 
select * from user_sys_privs;   
5 撤銷用戶各種權限 
revoke create table from csdn; revoke create session from csdn; 
revoke create sequence to csdn; revoke resource to csdn; 
revoke connect to csdn; revoke unlimited tablespace to csdn;   
6 通過角色來賦予用戶各種權限 
create user root identified by root default tablespace csdn1 temporary tablespace csdn2; 
create role role1; grant create table to role1; 
grant create session to role1; 
grant connect to role1; 
grant resource to role1; 
grant create sequence to role1;   
(1) 將角色賦予給用戶 grant role1 to root;   
(2) 刪除角色 drop role role1;   
7 序列 
create sequence xulie 
minvalue 1 
maxvalue 222222 
start with 1 increment by 1 
nocache 
nocycle   

----csdn Login--------- 

1 創建表 
drop table tb_book; 
create table tb_book ( book_id int primary key not null, book_name varchar(32) not null, book_des varchar(100) not null);   
2 通過序列來插入數據 
insert into tb_book(book_id,book_name,book_des) values(xulie.nextval,'計算機科學與技術','計算機'); 
insert into tb_book(book_id,book_name,book_des) values(xulie.nextval,'信息管理技術','信管'); 
insert into tb_book(book_id,book_name,book_des) values(xulie.nextval,'專業英語','外語'); 
insert into tb_book(book_id,book_name,book_des) values(xulie.nextval,'土木工程建設','土木'); 
select * from tb_book;   
3 創建學生表 
create table tb_student ( stu_id int primary key not null, stu_name varchar(32) not null, stu_sex char(2) not null check(stu_sex in('男','女')), stu_age int not null);   
4 更改表的別名 
rename tb_student to tb_stu;   
5 創建借書記錄表 
create table tb_borrow ( borrow_id int primary key not null, stu_id int not null, book_id int not null); rename tb_borrow to tb_j; alter table tb_j add constraint b_b foreign key(book_id) references tb_book(book_id); alter table tb_j add constraint b_s foreign key(stu_id) references tb_stu(stu_id);       
6 查詢語句 列出所有借書的記錄號 書名 借書的人名 
select j.borrow_id,s.stu_name,b.book_name from tb_stu s,tb_book b,tb_j j where s.stu_id=j.stu_id and b.book_id=j.book_id;   
列出同一個專業 但是借了不同一本書的學生 
select s.zhuanye,s.stu_name,b.book_name from tb_book b,tb_stu s order by s.zhuanye,b.book_name;   
7 數值函數 
select ceil(13.2) from tb_stu; --向上取整 
select floor(12.9) from tb_stu;--向下取整 
select power(9,19) from tb_stu;--9的19次方 
select sqrt(8) from tb_stu;    --8的平方根 
select sign(-2) from tb_stu;   --正數返1 負數返-1 0返0 
select trunc(12.232323123,5) from tb_stu;--取5位小數 
select round(1232.343,2) from tb_stu;--小數位為2 四捨五入 
select exp(3) from tb_stu; --求指數 
select mod(12,8) from tb_stu; --求余數 
select ln(10) from tb_stu;--自然對數 
select log(10,100) from tb_stu;--以10為底 100的對數 
select vsize(1010) from tb_stu;--返回1010所占空間的大小    
8 常用的函數 
select initcap(stu_name) from tb_stu;--首字符轉換成大寫 
select stu_name,instr(stu_name,'s') from tb_stu;--查找s在stu_name中的位置 返回相應的值(0 n) 
select length(stu_name) from tb_stu;--返回長度 
select upper(stu_name) from tb_stu;--換大寫 
select lower(stu_name) from tb_stu;--換小寫 
select lpad(stu_name,11,'Hello') from tb_stu;--長度不夠則在左邊填充Hello 直到夠11 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved