Oracle最新练习题

本文提供了两个阶段的Oracle数据库SQL练习题目,涵盖查询学生、教师、课程和成绩等信息,涉及多表操作、条件查询、排序、聚合函数等多个方面,旨在提升SQL技能。
摘要由CSDN通过智能技术生成

**

第一阶段题目:

**

以下练习题是根据初始化到数据库中的表执行的,请务必先执行如下建表语句。


```sql
create table s1_student( sno varchar2(10) primary key, sname varchar2(30), sbirthday varchar2(30), ssex varchar2(10),sclass varchar2(10) ); 
create table s1_teacher(  tno varchar2(10) primary key, tname varchar2(30),tsex varchar2(10),tbirthday varchar2(30),prof varchar2(30),depart varchar2(30) );  
create table s1_course( cno varchar2(10), cname varchar2(30),  tno varchar2(10) ); 
create table s1_score( sno varchar2(10), cno varchar2(10),  degree number );
create table s1_grade( low number, upp number,  rank varchar2(2) );

```sql
/*******初始化学生表s1_student******/ 
insert into s1_student values ('108', '曾华', '1997/9/1', '男', '95033');
insert into s1_student values ('105', '匡明', '1995/10/2', '男', '95031');
insert into s1_student values ('107', '王丽', '1996/1/23', '女', '95033');
insert into s1_student values ('101', '李军', '1996/2/20', '男', '95033');
insert into s1_student values ('109', '王芳', '1995/2/10', '女', '95031');
insert into s1_student values ('103', '陆君', '1994/6/3', '男', '95031');
commit; 
/*******初始化教师表s1_teacher*******/ 
insert into s1_teacher values ('804', '李诚','男','1979-12-2','副教授','计算机系'); 
insert into s1_teacher values ('856', '张旭','男','1985-3-12','讲师','电子工程系'); 
insert into s1_teacher values ('825', '王萍','女','1989-5-2','助教','计算机系'); 
insert into s1_teacher values ('831', '刘冰','女','1988-8-2','助教','电子工程系'); 
commit; 
/*******初始化课程表s1_course********/ 
insert into s1_course values ('3-105', '计算机导论', '825');
insert into s1_course values ('3-245', '操作系统', '804');
insert into s1_course values ('6-166', '数据电路', '856');
insert into s1_course values ('9-888', '高等数学', '800');
commit; 
/********初始化成绩表s1_score*********/
insert into s1_score values ('103', '3-245', 86);
insert into s1_score values ('105', '3-245', 75);
insert into s1_score values ('109', '3-245', 68);
insert into s1_score values ('103', '3-105', 92);
insert into s1_score values ('105', '3-105', 88);
insert into s1_score values ('109', '3-105', 76);
insert into s1_score values ('101', '3-105', 64);
insert into s1_score values ('107', '3-105', 91);
insert into s1_score values ('108', '3-105', 78);
insert into s1_score values ('101', '6-166', 85);
insert into s1_score values ('107', '6-106', 79);
insert into s1_score values ('108', '6-166', 81);
commit;  
/********初始化成绩分类表s1_grade*********/
insert into s1_grade values ('90', '100', 'A');
insert into s1_grade values ('80', '89', 'B');
insert into s1_grade values ('70', '79', 'C');
insert into s1_grade values ('60', '69', 'D');
insert into s1_grade values ('0', '59', 'E');
commit;

1.查询s1_student表中的所有记录的Sname、Ssex和Class列.

select sname,ssex,sclass from s1_student;

2.查询教师所有的单位即不重复的Depart列.

select distinct depart from s1_teacher;

3.查询s1_student表的所有记录.

select * from s1_student;

4.查询s1_score表中成绩在60到80之间的所有记录.

select * from s1_score where degree between 60 and 80;

5.查询s1_score表中成绩为85,86或88的记录.

select * from s1_score where degree in (85,86,88);

6.查询s1_student表中“95031”班或性别为“女”的同学记录.

select * from s1_student where sclass='95031' or ssex='女';

7.以Class降序查询s1_student表的所有记录.

select * from s1_student order by sclass desc;

8.以Cno升序、Degree降序查询s1_score表的所有记录。

select * from s1_score order by cno,degree desc;

9.查询“95031”班的学生人数。

select count(sno) from s1_student where sclass='95031';

10.查询s1_score表中的最高分的学生学号和课程号。

select sno,cno from s1_score where degree =(select max(degree) from s1_score);

11.查询‘3-105’号课程的平均分。

select avg(degree) from s1_score where cno='3-105';

12.查询s1_score表中至少有5名学生选修的并以3开头的课程的平均分数。

select cno,avg(degree) from s1_score where cno like '3%' group by cno 
having count(sno)>5;

13.查询最低分大于70,最高分小于90的Sno列。

select sno from s1_score group by sno having min(degree)>70 and max(degree)<90;

14.查询所有学生的Sname、Cno和Degree列。

select sname,cno ,degree from s1_student st,s1_score sc where st.sno=sc.sno(+);

15.查询所有学生的Sno、Cname和Degree列。

select sno,cname,degree from s1_score sc,s1_course co where sc.cno(+)=co.cno;

16.查询所有学生的Sname、Cname和Degree列。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值