3、修改角色 语法:
ALTER ROLE role_name
[NOT IDENTIFIED]|[IDENTIFIED BY password]; 实例:
ALTER ROLE high_manager_role IDENTIFIED BY highrole; ALTER ROLE middle_manager_role NOT IDENTIFIED;
4、角色的生效与失效 语法:
SET ROLE [role_name[IDENTIFIED BY password ]]|[ALL [EXCEPT role_name]]|[NONE]; 参数说明:
role_name:表示进行生效或失效设置的角色名称;
IDENTIFIED BY password:用于设置角色生效或失效时的认证口令; ALL:表示使当前用户所有角色生效;
EXCEPT role_name:表示除了特定角色外,其余所有角色生效; NONE:表示使当前用户所有角色失效。
实例:
SET ROLE NONE;
SET ROLE high_manager_role IDENTIFIED BY highrole;
SET ROLE middle_manager_role,low_manager_low IDENTIFIED BY lowrole; SET ROLE ALL EXCEPT low_manager_role,middle_manager_role;
5、删除角色 语法结构
DROP ROLE role_name;
6、利用角色进行权限管理 (1) 给用户或角色授予角色 语法:
GRANT role_list TO user_list|role_list;
例如,将CONNECT,high_manager_role角色授予用户user1,将RESOURCE,CONNECT角色授予角色middle_manager_role。
GRANT CONNECT,high_manager_role TO user1;
GRANT RESOURCE,CONNECT TO middle_manager_role;
(2)从用户或角色回收角色 语法:
REVOKE role_list FROM user_list|role_list;
例如,回收角色middle_manager_role的RESOURCE,CONNECT角色。 SQL>REVOKE RESOURCE,CONNECT FROM middle_manager_role;
(3)用户角色的激活或屏蔽 语法:
ALTER USER user_name DEFAULT ROLE [role_name]|[ALL [EXCEPT role_name]]| [NONE]; 例:
ALTER USER user1 DEFAULT ROLE NONE;
ALTER USER user1 DEFAULT ROLE CONNECT,DBA; ALTER USER user1 DEFAULT ROLE ALL;
ALTER USER user1 DEFAULT ROLE ALL EXCEPT DBA;
【实验内容】
1. 创建一个用户口令认证的数据库用户usera_exer,口令为usera,默认表空间为USERS,
配额为10MB,初始账户为锁定状态。
2. 创建一个口令认证的数据库用户userb_exer,口令为userb。
3. 为usera_exer用户授权CREATE SESSION权限、scott.emp的SELECT权限和UPDATE权限,同时允许该用户将获得的权限授予其他用户。 4. 将用户usera_exer的账户解锁。 5. 用usera_exer登录数据库,查询和更新scott.emp中的数据。同时将scott.emp的SELECT权限和UPDATE权限授予用户userb_exer。
6. 禁止用户usera_exer将获得的CREATE SESSION权限再授予其他用户。
7. 禁止用户usera_exer将获得的scott.emp的SELECT权限和UPDATE权限再授予其他用户。 8. 创建角色rolea和roleb,将CREATE TABLE权限,scott.emp的INSERT权限和DELETE权限授予rolea;将CONNECT,RESOURCE角色授予roleb。 9. 将角色rolea,roleb授予用户usera_exer。
实验四 数据操纵和查询SQL语句
【开发语言及实现平台或实验环境】
Oracle10g
【实验目的】
(1)练习插入、更新、删除等基本的数据操纵语句; (2)练习SQL查询语句;
【实验原理】 1. 数据操纵 (1)插入数据
用Insert在基本表customer中插入数据:
SQL>insert into customer values (?Nicholson?,?CA?,6989.99); SQL>insert into customer values (?Martin?,?CA?,2345.45); SQL>insert into customer values (?Laursen?,?CA?,34.34); SQL>insert into customer values (?Bambi?,?CA?,1234.55); SQL>insert into customer values (?McGraw?,?NJ?,123.45);
在表STATE中插入指定的字段:
SQL>insert into state (state_name,state_cd) 2 values ('Massachusetttes', 'M');
SQL>insert into state (state_name,state_cd) 2 values ('California', 'CA');
SQL>insert into state (state_name,state_cd) 2 values ('NewJersey', 'NJ');
SQL>insert into state (state_name,state_cd) 2 values ('NewYork', 'NY');
(2)修改数据
把state表中NewYork改为Florida,NY改为FD: UPDATE state SET state_name = 'Florida', state_cd = 'FD' where state_name = 'NewYork' and state_cd = 'NY';
(3)删除数据
从STATE表删除state_name为Florida和state_cd为FD的记录: DELETE FROM STATE WHERE state_name = 'Florida' AND state_cd = 'FD';
3. 查询
SQL查询包括简单查询、多表连接查询和子查询,例如: (1)显示EMP表中所有的部门号、职工名称和管理者号码:
SELECT DEPTNO,ENAME,MGR FROM EMP;
(2) 算术运算符的使用
SELECT ENAME, SAL+250*12 FROM EMP;
(3)连字符的使用
把职工号和职工名字连接起来,如下:
SELECT EMPNO||ENAME EMPLOYEE FROM EMP;
把职工号和职工名字中间用‘-’连接起来,并输出‘WORKS IN DEPARTMENT’,如下: SELECT EMPNO||'-'||ENAME EMPLOYEE, 'WORKS IN DEPARTMENT', DEPTNO FROM EMP;
(4) 禁止重复
如果列举出EMP表中所有部门号: Select deptno from emp;
(5) 排序
按单个字段排序,如按照ENAME排序,
SELECT ENAME,JOB,SAL*12,DEPTNO FROM EMP ORDER BY ENAME;
(6) 带条件的查询
1)查询工作是CLERK的所有职工的姓名,职工号和部门号
SELECT ENAME, EMPNO, JOB, DEPTNO FROM EMP WHERE JOB = 'CLERK';
(6)操作符的应用 1)BETWEEN的应用
查询工资在1000到2000之间的职工名字和工资信息。
SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000; 2)IN
查询有7902,7566,7788三个MGR号之一的所有职工: SELECT EMPNO,ENAME, SAL,MGR FROM EMP WHERE MGR IN (7902,7566,7788);
3)LIKE
通配符%代表任意0或多个字符。 通配符_代表任意单个字符。
查询名字以“S”开始的所有职工:
SELECT ENAME FROM EMP WHERE ENAME LIKE 'S%'; 4)IS NULL
查询没有管理者的所有职工:
SELECT ENAME,MGR FROM EMP WHERE MGR IS NULL;
【实验内容】 有4个表:
学生表:S(Snum,Sname,sex,birthday,dept)
课程表:C(Cnum,Cname,Credit,Tnum) 选修表:SC(Snum,Cnum,grade)
教师表:T(Tnum,Tname,sex,birthday,dept,title) 请完成以下操作:
1. 建立表,实现完整性约束;
2. 查询学生表中不姓“王”的学生的情况;
3. 查询所有有成绩的学生的学号、姓名和课程名; 4. 查询所有女教师及其所上的课程; 5. 查询各个课程号及其相应的选课人数;
6. 查询每个学生已选修课程的门数及平均成绩; 7. 将学生刘磊新选修的数据库原理插入选修表中; 8. 将学生张红选修的C3课程的成绩加10分; 9. 将学生张红选修的“数据库原理”删除。