新建视图、用户,并赋予该用户查询视图权限

一、需求

数据库有个表car,需要为这个表建立一个视图view_car,并新建一个用户user01,赋予查询这个视图的权限

二、实施步骤

1、以管理员clgl登陆数据库,新建视图view_car:

create or replace view view_car as select * from CAR;

2、新建用户user01

create user user01
identified by "123456";

3、授予用户user01权限

grant select on view_car_runtime_b to user01;    //查询视图权限
grant connect to user01;                                   //连接数据库权限
grant create synonym to user01;                        //新建同义词权限

4、以用户user01登陆数据库,可以访问到视图view_car的信息

select * from clgl.view_car;      //查询视图view_car的信息,由于每次都需要加上用户前缀clgl.,十分不方便,因此设置一个同义词方便查询

5、为视图clgl.view_car新建一个别名car

create synonym car for clgl.view_car;    //设置clgl.view_car的别名为car

select * from car;    //用户可以直接输入car查询数据

6、以clgl登陆数据库,设置用户user01的允许访问会话数

alter system set resource_limit=true scope=both sid='*';     //使用resource_limit及profile限制用户连接
create profile user01_profile limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited;   //新建一个user profile:user01_profile 
alter user user01 profile user01_profile;    //更改用户user01的profile为user01_profile
alter profile user01_profile limit SESSIONS_PER_USER 2;  //限定用户user01的连接数为2

当user01的访问连接数超过三个时,会提示错误:ora-02391:exceeded simultaneous sessions_per_user limit

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、创建视图View_student: ``` CREATE VIEW View_student AS SELECT * FROM Student WHERE major = '计算机软件'; ``` 2、创建视图View_student_male: ``` CREATE VIEW View_student_male AS SELECT s.sid, s.name, sc.cno, sc.grade FROM Student s, StuCou sc WHERE s.sid = sc.sid AND s.major = '计算机软件' AND s.gender = '男'; ``` 3、创建视图View_student_avg: ``` CREATE VIEW View_student_avg AS SELECT sid AS '学号', AVG(grade) AS '均分' FROM StuCou GROUP BY sid; ``` 4、查询平均成绩在80以上的学生: ``` SELECT * FROM View_student_avg WHERE 均分 >= 80; ``` 5、插入一条记录并比较变化: ``` -- 插入前 SELECT * FROM View_student; INSERT INTO Student VALUES ('2021001', '张三', '男', '计算机软件'); -- 插入后 SELECT * FROM View_student; -- 插入前 SELECT * FROM View_student_avg; INSERT INTO StuCou VALUES ('2021001', '101', 90); -- 插入后 SELECT * FROM View_student_avg; SELECT * FROM StuCou; ``` 如果插入的记录的专业与视图不同,则插入前后视图和基本表的数据无变化。如果一定要删除View_student中“刘丽”的记录,需要使用DELETE语句,但这会同时删除基本表中的记录,可能会影响其他视图的数据。如果只想删除View_student中的记录,可以使用INSTEAD OF DELETE触发器来实现。 6、修改视图View_student_male: ``` UPDATE View_student_male SET grade = grade + 5 WHERE cno = '101'; ``` 7、根据姓名删除View_student中的记录: ``` DELETE FROM View_student WHERE name = '刘丽'; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值