目录
前言
练习题
实验八
实验九
题目一
题目二
总结
前言
本篇练习题的重点有两个:
一、测试提交commit和回滚rollback的作用,了解锁等待、授权等知识。
二、学会复制表结构、学会插入数据,特别是学会如何避免重复插入,也就是如何避免插入已经存在的数据。
练习题
实验八
1、按顺序执行下面表格的语句
2、计算十个结果,将结果存入test8_10表格并提交
表格如下:
create table test8_10(
test varchar(20),
age numeric(3)
)
insert all
into test8_10 values ('结果1', 88)
into test8_10 values ('结果2', 90)
into test8_10 values ('结果3', 90)
into test8_10 values ('结果4', 86)
into test8_10 values ('结果5', 90)
into test8_10 values ('结果6', 90)
into test8_10 values ('结果7', 86)
into test8_10 values ('结果8', 86)
into test8_10 values ('结果9', 76)
into test8_10 values ('结果10', 86)
select * from dual
关键点:
1、本题的重点不在于SQL语句如何写,重点在于如何理解commit和rollback,以及这两个操作对表格的操作在两个账号之间的交互
2、commit:仅仅执行并未commit的SQL语言不会对表格产生实质性的影响。也就是说表格没有发生实质性的改变。例如,在主账号中执行update并不提交,在备用账号上select的结果不会发生变化,因为表格没有发生实质性变化。
3、rollback:对于没有commit提交的操作,这个操作以及其结果都是在账号缓存区的,表格本身没有发生变化。所以可以通过rollback操作,在账号上撤回操作
实验九
题目一
- 创建表test9_01,表的结构同pub.student_11_1一样。
- 为test9_01的sid创建唯一不重复索引。
- 将pub用户下的Student中性别是“女”的数据添加到test9_01中。
- 将pub用户下的Student_11_1中性别是“女”的数据添加到test9_01中,如果某个学号已经包含在test9_01中,这个记录就不要再插入了(即不要插入重复学号的数据)。
- 将pub用户下的Student_11_2中性别是“女”的数据添加到test9_01中,如果某个学号已经包含在test9_01中,这个记录就不要再插入了(即不要插入重复学号的数据)。
- 要求完成上述功能,请采用1条create table、1条create index、3条insert共5条SQL方式完成。
create table test9_01(
sid char(12) not null ,
name varchar2(10) not null,
sex char(2),
age int,
birthday date,
dname varchar2(30),
class varchar2(10)
);
create index suoyin on test9_01(sid)
insert into test9_01(
select *
from pub.student
where sex='女'
)
insert into test9_01(
select *
from pub.student_11_1
where sex='女' and sid not in(
select distinct sid
from pub.student
where sex='女'
)
)
insert into test9_01(
select *
from pub.student_11_2
where sex='女' and sid not in(
select distinct sid
from test9_01
)
)
关键点:
1、insert的产品只能是关系,而select的结果就是关系,所以可以直接insert进去。如果是自己拟定的值需要用values将值变成关系再insert。例如values(12,“女”)
2、利用对插入表格本身进行sid not in的操作,实现不重复插入的功能
题目二
- 创建表test9_02,表的结构同pub.student_11_1一样。
- 为test9_02的sid创建唯一不重复索引。
- 将pub用户下的Student中性别是“女”的且pub.student_course中存在不及格成绩的同学添加到test9_02中。
- 将pub用户下的Student_11_1中性别是“女”的且pub.student_course中存在不及格成绩的同学数据添加到test9_02中,如果某个学号已经包含在test9_02中,这个记录就不要再插入了(即不要插入重复学号的数据)。
- 将pub用户下的Student_11_2中性别是“女”的且pub.student_course中存在不及格成绩的同学数据添加到test9_02中,如果某个学号已经包含在test9_02中,这个记录就不要再插入了(即不要插入重复学号的数据)。
- 要求完成上述功能,请采用1条create table、1条create index、3条insert共5条SQL方式完成。
create table test9_02(
sid char(12) not null ,
name varchar2(10) not null,
sex char(2),
age int,
birthday date,
dname varchar2(30),
class varchar2(10)
);
create index suoyin1 on test9_02(sid)
insert into test9_02
(
select * from pub.student
where sex='女' and
sid in (select distinct sid from pub.student_course where score<60)
);
insert into test9_02
(
select * from pub.student_11_1
where sex='女'
and sid not in (select distinct sid from test9_02)
and sid in (select distinct sid from pub.student_course where score<60)
);
insert into test9_02
(
select * from pub.student_11_2
where sex='女'
and sid not in (select distinct sid from test9_02)
and sid in (select distinct sid from pub.student_course where score<60)
);
关键点:
1、在一个数据库中一个名字的索引是唯一的,不可以重复
总结
本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验八、九。不可用于商业用途转发。
如果能帮助到大家,大家可以点点赞、收收藏呀~