SQL - PLSQL练习题

更新时间:2023-11-03 02:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

在开始做题目之前,请首先仔细阅读关于几个表的说明: 学生基本信息表:Students (个人编号,姓名,性别,生日); 课程信息表:courses (课程编号,课程名称)

考试成绩表:results(个人编号,课程编号,分数,档次) 成绩档次表:grades(序号,最低分,最高分,等级评定,说明) 学生成绩临时信息表temp(个人编号,课程编号,分数) /From students a left join results b where a.sno=b.sno 在scott/tiger用户下,执行以下语句,进行建表和插入数据操作: ------------------以下为初始数据--------------------------- INSERT INTO students

VALUES(101,'张三', '女', '07-5月-1990'); INSERT INTO students

VALUES(102,'李四', '男', '25-11月-1992'); INSERT INTO students

VALUES(103,'王五', '女', '12-8月-1991'); INSERT INTO students

VALUES(104,'赵六', '男', '08-10月-1991'); INSERT INTO students

VALUES(105,'周七', '男', '03-4月-1992'); INSERT INTO students

VALUES(106,'孙八', '男', '21-7月-1990');

INSERT INTO students

VALUES(107,'钱九', '男', '21-12月-1990'); INSERT INTO students

VALUES(108,'沈十', '女', '11-7月-1992'); INSERT INTO COURSES VALUES ('91', 'C语言'); INSERT INTO COURSES VALUES ('92', 'JAVA语言'); INSERT INTO COURSES VALUES ('93', 'Oracle编程'); INSERT INTO COURSES VALUES ('94', '语文'); INSERT INTO RESULTS VALUES ('101', '91', 85, ''); INSERT INTO RESULTS VALUES ('103', '91', 71, ''); INSERT INTO RESULTS VALUES ('104', '93', 82, ''); INSERT INTO RESULTS VALUES ('105', '92', 95, ''); INSERT INTO RESULTS VALUES ('107', '94', 90, ''); INSERT INTO RESULTS VALUES ('108', '92', 67, ''); INSERT INTO TEMP VALUES ('102', '91', 58); INSERT INTO TEMP VALUES ('101', '94', 88); INSERT INTO TEMP VALUES ('104', '93', ''); INSERT INTO TEMP VALUES ('106', '92', 95); INSERT INTO TEMP VALUES ('112', '93', 76); INSERT INTO TEMP VALUES ('110', '91', 100); INSERT INTO TEMP VALUES ('108', '92', ''); Commit;

******************以下为题目*****************

1.(5分)向成绩档次表grades中的前三个字段(ind, min_score,

max_score)中插入以下几条数据

序号 1 2 3 4

2. (5分)根据下面说明完善成绩档次表grades中的字段(grade,remark)

分数段 0-59分 60-79分 80-89分 90-100分

min_score 0 60 80 90 max_score 59 79 89 100 档次 D C B A 说明 不及格 差 良好 优秀

3. (10分)统计成绩表中,各门课程的课程编号,课程名称,人数,以及该门课程总分,课程平均分(保留两位小数)等信息,查询显示出人数不止1人的课程的上述信息。

4.(10分)检索所有有考试成绩的学生的基本信息(编号,姓名,性别)以及选学的课程的名称,成绩,按照学生编号进行排序;ed select a.sno,a.sname,a.sex,b.cname,b.rcours from students a right join results b on a.sno=b.rno order by b.rno desc

5.(10分)编写匿名块,打印成绩表中编号为 101的学生的编号,姓名,课程编号和分数。

From student b inner join result b on a.sno=b.eno where

6. (15分)编写匿名块,检索出截止到今天(sysdate)年龄<20周岁,并且考试分数高于所有人员平均分数的学生信息,并按如下格式打印:

‘编号:xxx,姓名:xxx,生日:yyyy-mm-dd,课程编号:xxx,课程分数:xxx’

7. (20分)编写匿名块,遍历students表中所有人员信息,根据

grades表中的分数分档,更新results表中学生的成绩档次(grade字段),并对各自的成绩进行判断:

(1)如果学生成绩在A档,打印信息“xxx,你是好样的!” (2)如果学生成绩在B档或者C档,打印“xxx,再接再厉!” (3)其他的打印“xxx,你还差得远呢!”

(4)如果执行中出现异常,捕获异常并提示异常的系统信息;

8.(25分)编写存储过程,完成以下题目:

从temp表中取出所有学生编号、课程编号、成绩,插入到考试成绩表中。

(1)根据Students表判断临时表中人员信息是否存在,不存在的按如下格式打印: “编号为:xxx的学生,没有基本信息!”;

(2)判断考试成绩表中是否已存在对应的人员编号和课程编号,如果存在,更新分数;如果不存在,将最新信息插入考试成绩表;

(3)运用异常处理方法,对于不能正常处理的数据,使用异常捕捉的方式处理,并打印异常信息。 (提示:注意循环中,不能一出现异常就全部跳出循环;需要灵活的使用异常+循环,使循环当中即使报错也不影响下一次循环处理。)

(4)全部数据处理成功(错误不包含(1)中的情况,即出现(1)的情形,返回值也为1),过程的返回值为1;否则,为0;

(5) 存储过程命名统一为: prc_stu

本文来源:https://www.bwwdw.com/article/azx2.html

Top