🕺作者: 主页
我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言
🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!
文章目录
- 实验六 模式对象管理与安全管理
- 【实验目的】
- 【实验内容】
- 【实验总结】
实验六 模式对象管理与安全管理
【实验目的】
- 了解模式对象的类型
- 掌握命令方式建立表、视图、索引等常见对象的方法
- 了解保存点、回退、提交操作
- 熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限
- 熟练使用建立用户、角色,为用户授权、授予角色的命令
【实验内容】
- 创建一个TESTUSER用户,密码为test,默认表空间为users表空间,在users表空间中quota属性为unlimited
- 编写程序
create user TESTUSER
IDENTIFIED BY test
default tablespace users
quota unlimited on users;
-
运行结果
- 创建用户后为其授予登录数据库和创建数据库对象的权限
- 编写程序
grant connect,resource to TESTUSER;
-
运行结果
- TESTUSER用户登录数据库
- 编写程序
conn testuser/test
-
运行结果
- 创建学生信息表(学号,姓名,性别,入学成绩),定义主键和输入数据(至少5条数据),提交添加的数据。并完成下面的题目:
4.1.创建学生信息表并插入数据
- 编写程序
create table stu_table
(
stu_no char(8) primary key not null,
stu_name varchar2(10) not null,
stu_sex char(1) not null,
stu_grade float not null
);
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20180001', 'Lunatic', 'M', 488.2);
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20180002', 'Insane', 'M', 391.5);
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20180003', 'Mad', 'M', 477.8);
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20180004', 'Faze Clan', 'F', 489.2);
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20180005', 'Astralis', 'F', 590.2);
- 再继续添加2条数据,设置一个保存点savepoint,再添加1条数据,执行回退到保存点的回退命令。查看此时表中数据
- 添加2条数据
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20210006', 'ARSENAL', 'M', 591.2);
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20210007', 'Chelsea', 'M', 488.5);
- 设置一个保存点
savepoint key_rollback;
- 再添加一条数据
insert into stu_table(stu_no, stu_name, stu_sex, stu_grade)
values ('20210008', 'Man Utd', 'M', '388.7');
- 回退到保存点的位置
rollback to key_rollback;
- 查看表中数据,可以看到学号为20210008的学生信息消失。
select * from stu_table;
- 查询入学成绩大于480的学生信息
select * from stu_table
where stu_grade > 480;
- 建立男生信息视图(创建视图的权限需要提前授予)
- 授予创建视图的权限(注意切换到有权限的用户下进行授权)
grant create view to testuser;
- 建立男生信息视图
create view view_male
as
select * from stu_table
where stu_sex = 'M';
- 在“成绩”字段上建立B-树索引
create index B_index on testuser.stu_table(stu_grade);
- 在testuser用户登录下,创建一个表簇,名为empl_dep,容纳empl表和dep表,有公共字段depno(簇键),大小为500,默认表空间为USERS表空间,存储参数为:初始化区间大小为100K,第二区间为200K等。
- 编写程序
create cluster empl_dep(depno varchar2(4))
size 500
tablespace users storage(
initial 100 K
next 200 K
minextents 2
maxextents 20
pctincrease 33
);
-
运行结果
![](https://img-blog.csdnimg.cn/img_convert/2da75772f4e8bb3e1fe4c4a60fec478d.png)
- 在表簇中建立empl表和dep表
- empl表(职员表)的主键为eno,外键为depno (需要先建立dep表)
- 编写程序
create table empl
(
e_no varchar(10) primary key,
e_name varchar(10) not null,
e_sex varchar(2),
depno varchar(4) not null references dep
)
cluster empl_dep(depno);
- 运行结果
- dep表(部门表)的主键为depno。
- 编写程序
create table dep
(
depno varchar(4) primary key,
d_name varchar(10) not null,
rs number
)
cluster empl_dep(depno);
- 运行结果
![](https://img-blog.csdnimg.cn/img_convert/6260e2a01124809151829d3bce727cee.png)
- 在表簇中建立一个簇键索引,名为empl_dep_index。
- 编写程序
create index empl_dep_index
on cluster empl_dep tablespace users;
- 运行结果
- 授予scott用户在empl表上的所有权限,提示:授权和收回权限可在sys/system/testuser用户登录以后进行授权。
- 授权
- 编写程序
grant all on empl to scott;
- 运行结果
- 授权后,更改为scott用户登录,测试是否能对empl表进行查改增删
- 在这之前先给dep表插入数据
- 然后到SCOTT用户下对empl表进行操作
- 登录SCOTT
- 插入数据
- 查看数据
- 删除数据
- 修改数据
- 收回scott用户拥有的empl表上DELETE权限,再次测试scott用户对empl表的删除操作是否还能执行
- 在testuser用户下收回scott用户拥有的empl表上DELETE权限
- 登录SCOTT用户测试是否可以对empl表进行删除
【实验总结】
本次实验着重介绍了模式对象管理和安全管理的知识。通过实验,我们学习了创建用户、授权和权限设置的方法,以及使用命令创建表、视图、索引等数据库对象的技巧。我们还学会了保存点、回退和提交操作的运用,以及如何建立和管理用户角色和权限。此外,我们还学习了在表簇中建立索引和授予权限的操作。通过这次实验,我们对数据库的结构管理和安全性有了更深入的理解,为今后的数据库管理工作打下了坚实基础。