设为首页 收藏本站
查看: 1185|回复: 1

[经验分享] 茶飘香~

[复制链接]

尚未签到

发表于 2017-12-11 08:36:43 | 显示全部楼层 |阅读模式
  实验内容:
  

(一)    授权  

1.    以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位。  
SQL
> create user u1_3985>
SQL> create user u2_3985>
SQL> create user u3_3985>
SQL> create user u4_3985>
2.    对1.中创建的用户授予connect,resource的权限。  
SQL
> grant connect,resource to u1_3985,u2_3985;  

3.    用户jsj***把查询Student表权限授给用户u1+学号后四位,u1执行相应的查询。  
SQL
> grant select on student to u1_3985;  
SQL
> con u1_3985/123@orcl;  

1)    查询jsj***用户的全体学生的详细记录。  
SQL
> select * from j2014213985.student ;  

2)    查询jsj***用户的所有姓刘的学生的姓名、学号和性别。  
SQL
> select sname,sno,ssex from j2014213985.student where sname like '刘%';  

3)    查询jsj***用户的名字中第二字为“勇”字的学生的姓名和学号。  
SQL
> select sname,sno from j2014213985.student where sname like '_明';  

4.    用户jsj***把对Student表和Course表的全部权限授予用户u2+学号后四位,u3+学号后四位;u2+学号后四位用户修改jsj***的数据。  
SQL
> grant all privileges on student to u2_3985,u3_3985;  
SQL
> grant all privileges on course to u2_3985,u3_3985;  
SQL
> update j2014213985.student set sage=24 where sname='刘明';  

5.    把对表SC的查询权限授予所有用户。  
SQL
> grant select on SC to public;  

1)    查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列  
SQL
> con u1_3985/123@orcl;  
SQL
> select sno,grade from j2014213985.SC where cno=3 order by grade desc;  

2)    查询各个课程号与相应的选课人数。  
SQL
> select cno,count(*) from j2014213985.SC group by cno;  

6.    用户jsj***授予用户u4+学号后四位对student表的insert权限,并允许此权限传播。  
SQL
> con j2014213985/j123456@orcl;  
SQL
> grant insert on student to u4_3985 with grant option;  

7.    用户u4+学号后四位将对表student的insert权限授予u5+学号后四位,并允许将权限转授给其他用户。(首先应该以u5+学号后四位的身份重新登陆数据库,然后再进行授权)  
SQL
> con u4_3985/123@orcl;  
SQL
> grant insert on j2014213985.student to u5_3985 with grant option;  
SQL
> con u5_3985/123@orcl;  
SQL
> grant insert on j2014213985.student to u1_3985 with grant option;  
(二)    回收权限
  

1.    收回所有用户对表sc的查询权限  
SQL
> revoke select on SC from public;  

2.    收回用户u4对student表的insert权限  
SQL
> revoke insert on student from u4_3985;  

3.    在回收权限之后验证用户是否真正丧失了该权限(查询表,插入记录)  
SQL
> select * from j2014213985.SC;  

select * from j2014213985.SC  
ORA
-00942: 表或视图不存在  
SQL
> insert into j2014213985.student values('201421','小屋','男',100,'MA');  
insert into j2014213985.student values(
'201421','小屋','男',100,'MA')  
ORA
-00942: 表或视图不存在  
(三)    角色
  

1.    创建一个角色  
SQL
> create role ro1;  

2.    给角色授予权限  
SQL
> grant insert,update,select on student to ro1;  

3.    将角色授予某一用户  
SQL
> grant ro1 to u1_3985;  

4.    检查用户是否具有相应的权限  
SQL
> con u1_3985/123@orcl;  
SQL
> select * from j2014213985.student;  
SQL
> insert into j2014213985.student values('20070002','徐梅','女',29,'MA');  
SQL
> update j2014213985.student set sage=25 where sname='刘明';  
检查此用户是否具有相应权限。
  
SQL
> con j2014213985/j123456@orcl;  
SQL
> insert into student values('20070001','张悦','女',22,'MA');  
SQL
> select * from student;  
SQL
> update student set sage=18 where sname='刘明';  
(四)    完整性
  

1.    建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码  
create table DEPT(
  
Deptno varchar(
10) constraint a1 primary key,  
Dname varchar(
10) unique not null,  
Dnum number(
4));  

1)SQL> insert into DEPT values('201411','宏光实业',1000);  

2)SQL> insert into DEPT values('201412','宏光实业',2000);  
insert into DEPT values(
'201412','宏光实业',2000)  
ORA
-00001: 违反唯一约束条件 (J2014213985.SYS_C0039963)  

3)SQL> insert into DEPT values('201411','长青实业',2000);  
insert into DEPT values(
'201411','长青实业',2000)  
ORA
-00001: 违反唯一约束条件 (J2014213985.A1)  

2.    建立学生登记表Student,要求学号在9000至9999之间,年龄<29,性别只能是’男’或’女’,姓名非空。  
create table Student2(
  
sno number(
10) check(sno>=9000 and sno<=9999),  
sanme varchar(
10) not null,  
sage number(
4) constraint a2 check(sage<29),  
ssex varchar(
4) check(ssex in('男','女')));  

  
(
1)SQL> insert into student2 values(9000,'李二',27,'男');  
(
2)SQL> insert into student2 values(8888,'张三',23,'男');  
insert into student2 values(
8888,'张三',23,'男')  
ORA
-02290: 违反检查约束条件 (J2014213985.SYS_C0039970)  
(
3)SQL> insert into student2 values(9999,'张三',30,'男');  
insert into student2 values(
9999,'张三',30,'男')  
ORA
-02290: 违反检查约束条件 (J2014213985.A2)  

3.    修改表Student的结构,由年龄小于29改为小于40。  
SQL
>>
SQL>>
  
(
1)SQL> insert into student2 values(9994,'张三',30,'男')  
(
2)SQL> insert into student2 values(9996,'王五',40,'男');  
insert into student2 values(
9996,'王五',40,'男')  
ORA
-02290: 违反检查约束条件 (J2014213985.A2)  
(
3)SQL> insert into student2 values(9992,'',38,'男');  
insert into student2 values(
9992,'',38,'男')  
ORA
-01400: 无法将 NULL 插入 ("J2014213985"."STUDENT2"."SANME")  

4.    建立职工表EMP,要求每个职工的应发工资不得超过3000元。应发工资实际上就是实发工资列Sal与扣除项Deduct之和。  
create table EMP(
  
sname varchar(
10) primary key,  
salary number(
10) check(salary<=3000),  
Sal number(
10),  
Deduct number(
10));  
(
1)SQL> insert into EMP values('李二',2600,2300,300);  
(
2)SQL> insert into EMP values('张三',3100,2900,200);  
insert into EMP values(
'张三',3100,2900,200)  
ORA
-02290: 违反检查约束条件 (J2014213985.SYS_C0039991)  
(
3)SQL> insert into EMP values('李四',3001,2900,101);  
insert into EMP values(
'李四',3001,2900,101)  
ORA
-02290: 违反检查约束条件 (J2014213985.SYS_C0039991)  

  

  
对上述新建立和修改定义的表,每个表输入3条数据,其中1条数据符合完整性约束,2条违反约束条件的,验证和体会Oracle的实体完整性和参照完整性。
  

  实验分析:
  在本次数据库实验中,我完成了实验要求。本次实验内容是关于sql语言进行用户权限的授予和回收,实体完整性,参照完整性及用户定义的完整性的定义。在课堂上,老师讲授了oracle的安全性和完整性控制相关知识,我也用笔练习写了sql语句,但是感觉印象还不是很深刻,有些不太理解。在实验课中我练习了sql语句,对课堂上所学的知识有了更深的理解,收获很多。实验中,我遇到了一些问题,通过查询资料和老师同学帮助最终解决了。遇到的问题如下:
  1、在授予权限时,grant <权限> on table <表名> to <用户> ;这样写后一直报错,后来同学告诉我不能加table ,因为oracle的数据库与数据库标准原理有一点区别,修改后,果然对了。
  2、在切换用户时,我不知道怎么切换,记得老师讲过,就是想不起来具体怎么做,后来问了同学,同学告诉我这样写 con user/pass@orcl;  这样写果然切换用户成功了。
  在本次试验中收获很多,很开心。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-422865-1-1.html 上篇帖子: Hibernate遇到oracle之主键生成策略 下篇帖子: Oracle中varchar2类型字段长度限制使用问题
累计签到:83 天
连续签到:1 天
发表于 2017-12-11 10:12:25 | 显示全部楼层
本帖最后由 mayiwen123456 于 2017-12-11 10:16 编辑

查询jsj***用户的名字中第二字为“勇”字的学生的姓名和学号。
> select sname,sno from j2014213985.student where sname like '_明';  
上面的应该是明,

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表