10-17 Oracle 基础练习

 
 
--1、查询Student表中的所有记录的Sname、Ssex和Class列。
select t.sname,t.ssex,t.sclass from student t;
--2、 查询教师所有的单位即不重复的Depart列。
select distinct e.depart from teacher e;

--3、 查询Student表的所有记录。
select * from student;

--4、 查询Score表中成绩在60到80之间的所有记录。
select * from score s where s.degree>60 and s.degree<80;
select s.degree from score s where s.degree between 60 and 80;

--5、 查询Score表中成绩为85,86或88的记录。
select * from score s where s.degree=85 or s.degree=86 or s.degree=88;

--6、 查询Student表中“95031”班或性别为“女”的同学记录。
select * from student s where s.ssex='' or s.sclass='95031';

--7、 以Class降序查询Student表的所有记录。
select * from student s order by sclass desc;

--8、 以Cno升序、Degree降序查询Score表的所有记录。
select *from score order by cno,degree desc;

--9、 查询“95031”班的学生人数。
select count(*) from student where sclass='95031';

--10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
select sno,cno from score where degree = (select max(degree) from score);
select * from(select sno,cno from score order by degree desc) where rownum=1;

 

--11、 查询每门课的平均成绩。
select cno,avg(degree) from score group by cno;

--12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select cno,avg(degree) from score where cno like '3%' group by cno having count(1)>5;

--13、查询分数大于70,小于90的Sno列。
select sno from score where degree between 70 and 90;

--14、查询所有学生的Sname、Cno和Degree列。
select t.sname,s.cno,s.degree from student t,score s where t.sno=s.sno;
select t.sname,s.cno,s.degree from student t join score s on t.sno=s.sno;

--15、查询所有学生的Sno、Cname和Degree列。
select t.sno,c.cname,s.degree from student t,course c,score s where s.sno=t.sno and c.cno=s.cno;
select t.sno,c.cname,s.degree from score s join student t on t.sno=s.sno join course c on c.cno=s.cno;

--16、查询所有学生的Sname、Cname和Degree列。
select t.sname,c.cname,s.degree from student t,course c,score s where t.sno=s.sno and c.cno=s.cno;

--17、 查询“95033”班学生的平均分。
select avg(degree) from score where sno in(select sno from student where sclass='95033');
/*
18、 假设使用如下命令建立了一个grade表:
create table grade(low  number(3),upp  number (3),rank  char(1))
insert into grade values(90,100,’A’)
insert into grade values(80,89,’B’)
insert into grade values(70,79,’C’)
insert into grade values(60,69,’D’)
insert into grade values(0,59,’E’)
现查询所有同学的Sno、Cno和rank列。*/
create table grade 
(
low number(3),
upp number(3),
rank char(2)
);
insert into grade values(90,100,'A');
insert into grade values(80,89,'B');
insert into grade values(70,79,'C');
insert into grade values(60,69,'D');
insert into grade values(0,59,'E');
select s.sno,s.cno,g.rank from score s,grade g where s.degree between g.low and g.upp;

--19、  查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
select * from score where cno='3-105'and degree>(select degree from score where sno='109'and cno='3-105');

--20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select * from score where degree not in(select max(degree) from score group by sno having count(2)>1);

--21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select * from score where cno='3-105'and degree>(select degree from score where sno='109' and cno='3-105');

--22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select * from student  where to_char(sbirthday,'yyyy')=(select to_char(t.sbirthday,'yyyy') from student t where sno='108');

--23、查询“张旭“教师任课的学生成绩。
select degree from course c join teacher t on c.tno=t.tno join score s on c.cno= s.cno where t.tname='张旭';

--24、查询选修某课程的同学人数多于5人的教师姓名。
select tname from teacher t where tno in
(select tno from course where cno in
(select s.cno from score s group by s.cno having count(1)>5));

--25、查询95033班和95031班全体学生的记录。
select * from student t join score s on t.sno=s.sno join course c on c.cno=s.cno
where sclass='95033'or sclass='95031';

--26、 查询存在有85分以上成绩的课程Cno.
select cno,cname from course where cno in(select cno from score where degree>85);

 

--27、查询出“计算机系“教师所教课程的成绩表。
select degree from score s join course c on s.cno=c.cno join teacher t on c.tno=t.tno where  depart='计算机系';

--28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
select tname,prof from teacher where prof not in
 (select a.prof from (select prof from teacher where depart='计算机系')a
join (select prof from teacher where depart='电子工程系') b 
on a.prof=b.prof)and depart in('计算机系','电子工程系');

--29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
select cno,sno,degree from score where cno='3-105' and degree>=(select max(degree) from score where cno='3-245')order by degree desc;

--30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
select cno,sno,degree from score where cno='3-105' and degree>=(select max(degree) from score where cno='3-245');

 

--31、查询所有教师和同学的name、sex和birthday.
select tname,tsex,tbirthday from teacher
union all select t.sname,t.ssex,t.sbirthday from student t;

--32、查询所有“女”教师和“女”同学的name、sex和birthday.
select tname,tsex,tbirthday from teacher where tsex=''
union all select t.sname,t.ssex,t.sbirthday from student t where t.ssex='';

原文地址:https://www.cnblogs.com/dandan1224/p/5951476.html