数据库管理系统练习与作业
2
第三章 练习一职工档案表( emp)
职工号 empno Number(4)
姓名 ename Varchar2(10)
工作类型 job Varchar2(9)
受雇日期 hiredate Date
工资 sal Number(7,2)
奖金 comm Number(7,2)
部门号 deptno Number(2)
列出所有在部门 20工作的雇员姓名,且列名为 name
列出名字不以 ‘ N’开头的工作类型
找出工资比奖金高的雇员,按工资降序排列,姓名升序排列
列出有关雇员姓名、奖金收入百分比的信息,按雇员姓名排序,不包括奖金未知的雇员
3
练习二 student (学生信息表 )
sno sname sex birthday class
108 曾华 男 09/01/77 95033
105 匡明 男 10/02/75 95031
107 王丽 女 01/23/76 95033
101 李军 男 02/20/76 95033
109 王芳 女 02/10/75 95031
103 陆军 男 06/03/74 95031
显示 student表中班级为,95031” 班或性别为
,女,的同学记录
以 class为降序,sno为升序显示 student表的所有记录
显示各班的学生人数
4
teacher(老师信息表 )
tno tname sex birthday prof depart
804 李诚 男 12/02/58 副教授 计算机系
856 李旭 男 03/12/69 讲师 电子工程系
825 王萍 女 05/05/72 助教 计算机系
831 刘冰 女 08/14/77 助教 电子工程系
列出教师表中所有的不重复的单位( depart列)
5
score(成绩表 )
sno cno degree
103 3-245 86
109 3-245 68
105 3-245 75
103 3-105 92
105 3-105 88
109 3-105 76
101 3-105 64
107 3-105 91
108 3-105 78
101 6-166 85
107 6-166 79
108 6-166 81
显示 score表中成绩在 60到 80之间的所有记录
显示 score表中成绩为 85,86或 88的记录
以 cno升序,degree降序显示 score表的所有记录
显示 score表中的最高分的学生学号和课程号
course(课程表 )
cno cname tno
3-105 计算机导论 825
3-245 操作系统 804
6-166 数字电路 856
9-888 高等数学 825
显示每一门课程的课程名和平均分
用嵌套查询从 score表中选出选修,3-105”课程的成绩高于,109” 号同学成绩的所有同学的记录
6
练习三职工档案表( emp)
职工号 empno Number(4)
姓名 ename Varchar2(10)
工作类型 job Varchar2(9)
受雇日期 hiredate Date
工资 sal Number(7,2)
奖金 comm Number(7,2)
部门号 deptno Number(2)
写出 emp的定义语句,其中职工号为主键,姓名、工作类型属性不可空,
且工资要求不可低于 800元。
7
上机练习一
目标:熟练掌握 SQL语句及 SQL PLUS命令。
练习内容:
把练习二中的后两张表,用 SQL PLUS在数据库中创建,并把创建表的 语法 保存到文件
create_xxx(xxx用你的姓名拼音缩写代替 )中;
表结构根据数据自行定义。
往表中插入数据,数据在练习二中已给出。
试验练习二中的各习题的 语句及结果,保存到文件 select_xxx中。
8
实验报告要求
以表格形式给出两张表的结构定义说明;
写出创建表的语法;
写出插入数据的语句,要求每个表写一句即可;
写出经上机验证后的练习题的语句和执行结果。
9
第四章 练习一 游标
1、假设已存在表 bonuss(empno,bonus),
要求从 emp表中取出 sal及 comm的值,
按下列公式计算红利,并写入 bonus表中:
红利( bonus) =sal*50%+comm*50%。
要求:使用游标。
1)、用直到型循环实现;
2)、用 FOR循环实现。
10
第四章 练习一 游标
2、找出工资最高的员工所在部门,并给该部门所有员工的工资中增加工龄补贴,
每年增加 $15。要求显示部门名称以及每位员工的姓名、工龄、工龄补贴的金额。
提示:工龄是当前日期减去参加工作日期后,折算成年数,可四舍五入。 (请复习相关函数)
要求:使用带参数的游标进行处理。
11
练习二 例外处理
遍历 emp表,并显示员工的姓名信息。自定义一个例外事件,当 ename=‘KING’时,
显示一个例外信息,He is a president.”
12
练习三 存储过程与函数
建立存储过程,它带有一个参数:学号。
该过程可以将指定的学生的所有课程的成绩改为 90(可能不止一门课),并显示该学生的学号、原成绩、新成绩 。 如果学号不存在,请定义例外处理,给出必要的提示。 score(成绩表 )
sno cno degree
103 3-245 86
109 6-166 68
… … …
13
练习四 触发器
给 teacher表编写一个( before-delete)触发器,当要在 teacher表中删除一个老师,
将触发该触发器。在触发器中将判断老师是否已经授课 (course表中是否有其记录 )。
如果已经安排授课,则不删除,并激发一个例外,把不允许删除的信息返回用户;
否则,提示可以删除。
14
上机练习二
目标:熟练掌握 PL/SQL部分的各种语法。
练习内容:
编写并调试练习三、四所要求的程序。
练习三调试:
输入一个存在的学号(课程不止一门且成绩不都等于 90);
输入一个不存在的学号,看例外处理结果。
练习四:
以此类推。