当前位置: 首页> 健康> 养生 > 数据库SQL语言实战(十)(最后一篇)

数据库SQL语言实战(十)(最后一篇)

时间:2025/7/8 11:12:02来源:https://blog.csdn.net/m0_67656158/article/details/139219391 浏览次数:0次

目录

前言

练习题

实验八

实验九

题目一

题目二

 总结 


前言

本篇练习题的重点有两个:

一、测试提交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操作,在账号上撤回操作

实验九

题目一

  1. 创建表test9_01,表的结构同pub.student_11_1一样。
  2. 为test9_01的sid创建唯一不重复索引。
  3. 将pub用户下的Student中性别是“女”的数据添加到test9_01中。
  4. 将pub用户下的Student_11_1中性别是“女”的数据添加到test9_01中,如果某个学号已经包含在test9_01中,这个记录就不要再插入了(即不要插入重复学号的数据)。
  5. 将pub用户下的Student_11_2中性别是“女”的数据添加到test9_01中,如果某个学号已经包含在test9_01中,这个记录就不要再插入了(即不要插入重复学号的数据)。
  6. 要求完成上述功能,请采用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.studentwhere sex='女'
)
insert into test9_01(select *from pub.student_11_1where sex='女' and sid not in(select distinct sidfrom pub.studentwhere sex='女')
)
insert into test9_01(select *from pub.student_11_2where sex='女' and sid not in(select distinct sidfrom test9_01)
)

 关键点:

1、insert的产品只能是关系,而select的结果就是关系,所以可以直接insert进去。如果是自己拟定的值需要用values将值变成关系再insert。例如values(12,“女”)

2、利用对插入表格本身进行sid not in的操作,实现不重复插入的功能

题目二

  1. 创建表test9_02,表的结构同pub.student_11_1一样。
  2. 为test9_02的sid创建唯一不重复索引。
  3. 将pub用户下的Student中性别是“女”的且pub.student_course中存在不及格成绩的同学添加到test9_02中。
  4. 将pub用户下的Student_11_1中性别是“女”的且pub.student_course中存在不及格成绩的同学数据添加到test9_02中,如果某个学号已经包含在test9_02中,这个记录就不要再插入了(即不要插入重复学号的数据)。
  5. 将pub用户下的Student_11_2中性别是“女”的且pub.student_course中存在不及格成绩的同学数据添加到test9_02中,如果某个学号已经包含在test9_02中,这个记录就不要再插入了(即不要插入重复学号的数据)。
  6. 要求完成上述功能,请采用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、在一个数据库中一个名字的索引是唯一的,不可以重复 

 总结 

本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验八、九。不可用于商业用途转发。

如果能帮助到大家,大家可以点点赞、收收藏呀~ 

关键字:数据库SQL语言实战(十)(最后一篇)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: