1.出比所在部门平均工资高的员工信息                                   
2.出既学课程号C1又学课程号C2的女同学的姓名                               
3.出既不学课程号C1又不学课程号C2的学生姓名                               
4.出有一们课程成绩为95分的女同学的姓名                                   
5.出选课数量大于3门的女同学的姓名                                       
6.出平均成绩大于80分的男同学的姓名                                   
7.出冯老师所教的每一门课程的平均成绩                                       
8.出男同学每一个年龄组的人数,要求按人数升序输出人数超过20人的年龄组       
9.出每门课程成绩都大于90分的学生姓名                                   
10.出比所有女同学年龄要大的男同学的姓名                                   
11.出没选C2课程的女同学的姓名                                           
12.出所有课程成绩都及格的学生姓名                                           
13.出选修课所有课程的学生姓名                                               
14.出平均成绩最高的学生姓名
Oracle11G综合练习
1、创建数据库和数据表
利用OEM(Oracle Enterprise Manager)创建Study数据库,并在其中建立6张表(第三章中已有介绍)
(1)学生基本信息表student,结构如下:
字段名
字段类型
约束条件
字段含义说明
sno
number(8)
Primary key
学号
sname
Varchar2(8)
Not null
姓名
ssex
Varchar2(2)
性别
sbirthday
date
出生日期
classno
varchar(6)
Foreign key
班级号
(2)班级信息表class,结构如下:
字段名
字段类型
约束条件
字段含义说明
classno
varchar(6)
Primary key
班级号
classname
Varchar(20)
Not null
班级名称
classspecial
Varchar2(20)
所属专业
Classdept
Varchar2(20)
所属系别
(3)课程信息表course,结构如下:
字段名
字段类型
约束条件
字段含义说明
cno
Number(6)
Primary key
课程号
cname
Varchar2(30)
Not null
课程名称
score
Number(6,2)
学分
(4)学修课程信息表SC,结构如下:
字段名
字段类型
约束条件
字段含义说明
sno
Number(8)
Foreign key
学号
cno
Number(6)
Foreign key
课程号
grade
Number(6,1)
成绩
(5)教师信息表teacher,结构如下:
字段名
字段类型
约束条件
字段含义说明
tno
Number(6)
Primary key
教师号
tname
Varchar2(8)
Not null
教师姓名
tsex
Varchar2(2)
性别
tbirthday
date
出生日期
ttitle
Varchar2(10)
职称
(6)教师任课情况表teaching,结构如下:
字段名
字段类型
约束条件
字段含义说明
tno
Number(6)
Foreign key
教师号
cno
Number(6)
Foreign key
课程号
2、利用OEM,向以上建立的6张数据表中分别输入以下内容。
(1)学生基本信息表student表的内容如下:
sno
sname
ssex
sbirthday
classno
李在
1991-10-1
Rj0801
葛畅
1990-8-8
Rj0801
刘晶
1990-5-22
Rj0801
杨敏
1989-1-8
Rj0801
胡贤斌
1990-10-8
Rj0801
赵鸿泽
1989-6-6
Rj0802
王威
1990-6-10
Rj0802
赵玮
1990-8-21
Rj0803
王娜娜
1991-9-23
Rj0803
秦键
1989-3-1
Rj0803
田邦仪
1990-2-26
Rj0804
赵心砚
1991-4-25
Rj0805
杨青
1989-11-15
Rj0805
杨玲玲
1990-12-12
Rj0806
(2)班级信息表class的内容如下:
classno
classname
classspecial
classdept
Rj0801
软件0801
软件工程
软件开发
Rj0802
oracle11g 创建数据库
软件0802
软件工程
软件开发
Rj0803
软件0803
软件工程
数字媒体
Rj0804
软件0804
软件工程
软件开发
Rj0805
软件0805
软件工程
数字媒体
Rj0806
软件0806
软件工程
软件开发
(3)课程信息表course的内容如下:
cno
cname
score
计算机基础
4
程序设计语言
4
数据结构
4
数据库原理与应用
4
计算机网络
3
微机原理与应用
4
(4)选修课程情况表sc的内容如下:
sno
cno
grade
88
91
78
95
67
58
89
71
(5)教师信息表teacher的内容如下:
tno
tname
tsex
tbirthday
ttitle
李英
1975-11-3
讲师
王大山
1969-3-2
副教授
张朋
1970-2-13
讲师
陈为军
1985-8-14
助教
宋浩然
1976-4-23
讲师
许红霞
1966-2-12
副教授
徐永军
1962-1-24
教授
李桂菁
1960-12-15
教授
王一凡
1974-12-8
讲师
田峰
1988-1-18
助教
(6)教师任课情况表teaching的内容如下:
cno
tno
3、利用OEM中的逻辑备份将上述数据表和数据备份到U盘,以备后面使用。
4、简单的数据查询
(1)查询所有同学的所有基本信息。
(2)查询所有同学的学号和姓名
(3)查询所有男同学的学号、姓名、出生日期
(4)查询所有在“1990-01-01”之前出生的女同学的学号、姓名、性别、出生日期
(5)查询所有姓“李”的男同学的学号、姓名、性别、出生日期
(6)查询所有姓名中含有“一”字的同学的学号、姓名
(7)查询所有职称不是“讲师”的教师的教师号、姓名、职称
(8)查询虽然选修了课程,但未参加考试的所有同学的学号                       
(9)查询所有考试不及格的同学的学号、成绩,并按成绩降序排列           
(10)查询课程号、、的所有课程号、课程名称(用IN运算符)
(11)查询在1970年出生的教师的教师号、姓名、出生日期
(12)查询各个课程号及相应的选课人数
(13)查询教授2门课以上的教师号
(14)查询选修了课程的学生平均分数、最低分数和最高分数
(15)查询1960年以后出生的,职称为讲师的教师的姓名、出生日期,并按出生日期升序排列。
5、复杂数据查询
(1)查询所有同学的选课及成绩情况,显示学号、姓名、课程号、成绩
(2)查询所有同学的选课及成绩情况,显示学生的姓名、课程名称、成绩,并将查询结果存放到一个新的数据表new_table中
(3)查询“软件0801”班的同学的选课及成绩情况,显示学号、姓名、课程号、课程名称、成绩
(4)查询所有同学的学分情况(假设课程成绩>=60时可获得该门课程的学分),显示学号、姓名、总学分(用JOIN)
(5)查询所有同学的平均成绩及选课门数,显示学号、姓名、平均成绩、选课门数
(6)查询所有选修了课程但未参加考试的所有同学及相应的课程,显示学号、姓名课程号、课程名称   
(7)查询所有选修了课程但考试不及格的所有同学及相应的课程,显示学号、姓名、课程号、课程名称、成绩
(8)查询选修了课程名为“程序设计语言”的所有同学及成绩情况,显示学生姓名、课程成绩(用ANY运算符)
(9)查询“软件开发系”的所有同学及成绩情况,显示学号、姓名、班级名称、课程号、课程名称、成绩
(10)查询所有教师的任课情况,显示教师姓名、课程名称;
(11)查询所有教师的任课门数,显示教师姓名、任课门数
(12)查询和“葛畅”在同一班级的同学的姓名(使用子查询)
(13)查询没有选修“计算机基础”课程的学生姓名(用NOT EXISTS)
(14)查询主讲“数据库原理与应用”和主讲“数据结构”的教师姓名(用UNION)
(15)查询讲授了所有课程的教师的姓名
6、在OEM下用PL/SQL语句定义存储过程
(1)创建一个能向学生表student中插入一条记录的存储过程insert_student,该过程需要5个参数,分别用来传递学号、姓名、性别、出生日期、班级号。   
(2)写出调用存储过程insert_student的SQL语句,向数据表student中插入一个新同学,并提供相应的实参值。                                       
(3)创建一个向课程表course中插入一门新课程的存储过程insert_course,该存储过程需要三个参数,分别用来传递课程号、课程名、学分,但允许参数“学分”的默认值为4,即当调用存储过程insert_course时,未给第三个参数“学分”提供实参值时,存储过程将按默认值4进行运算。                           
(4)调用存储过程insert_course,向课程表course中插入一门新课程。分两种情况(给出第三个参数和未给出第三个参数)写出相应的SQL命令,并比较结果。
(5)创建一个名称为query_student的存储过程,该存储过程的功能是从数据表student中根据学号查询某一同学的姓名、性别、出生日期、班级号。
(6)调用存储过程query_student,查询学号为“”的姓名、性别、出生日期、班级号,并写
出完成此功能的SQL命令。
7、在OEM下用PL/SQL语句定义触发器
(1)创建一个当向学生表student中插入一新同学时能自动列出全部同学信息的触发器display_trigger。                                                   
(2)执行存储过程insert_student,向学生表中插入一个新同学,看触发器display_trigger是否被触发。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。