--1查询student 表中的所有记录的name,sex,和id
select student_name,student_sex,student_id from student;
--2查询教师的所有单位即不重复的部门列
select distinct depart from teacher;
select depart from teacher group by depart;
select depart from teacher group by depart having count(*)>=1;
--3查询学生表中所有的记录
select * from student;
--4查询成绩表中60-80的记录
select * from sc where sc_score between 60 and 80;
--5查询成绩表中59,70,90的记录
select * from sc where sc_score in (59,70,90);
--6查询学生表中家在湖北省的女同学的信息
select * from student where student_address='湖北省'and student_sex='女';
--7降序查询
select * from teacher order by teacher_id desc;
--8教师号升序,部门降序
select * from teacher order by depart desc,teacher_id;
--9查询选10课人数
select sc_course_id,count(*) from sc group by sc_course_id having sc_course_id='10' ;
--10查询sc表中最高分的学生学号以及课程号
select sc_student_id,sc_course_id
from sc where sc_score =
(select max(sc_score) from sc );
--11查询10课的平均分
select sc_course_id,avg(sc_score) from sc group by sc_course_id;
--12查询sc表中至少有3名学生选修的,并以3开头的课程的平均分
select sc_course_id,avg(sc_score)from sc
where sc_course_id like '3%' group by sc_course_id having count(sc_course_id)>=3;
--13查询最低分大于70,最高分小于90 的学号
select sc_student_id from sc
group by sc_student_id having max(sc_score)<90 and Min(sc_score)>70;
--14查询所有学生的姓名,课程号,成绩
select student_name,sc_course_id,sc_score
from student left join sc on Student.student_id=sc.sc_student_id
order by student_name;
--15查询学生的学号,课程名,和成绩
select sc_student_id,course_name,sc_score
from sc join course on sc.sc_course_id=course_id
order by sc_student_id;
--16查询所有学生的姓名,课程名,成绩
select a.student_name,b.course_name,c.sc_score
from student a,course b,sc c
where a.student_id=c.sc_student_id and b.course_id=c.sc_course_id
order by a.student_name;
--
select a.student_name,b.course_name,c.sc_score
from sc c join student a on (a.student_id=c.sc_student_id)
join course b on b.course_id=c.sc_course_id
order by a.student_name;
--17查询 15计科班所选课程的平均分
select course_name,avg(sc.sc_score) from Student join sc
on (sc.sc_student_id=student.student_id)
join course on course.course_id=sc.sc_course_id
where student.student_class='15计科'
group by sc_course_id,course_name;
--18假设使用如下命令建立了一个grade表(现查询所有同学的Sno、Cno和rank列。)
CREATE TABLE grade(low number,upp number,rank varchar2(4));
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 sc_student_id,sc_course_id,sc_score,rank
from Sc join grade
on(Sc_score>=grade.low and Sc_score<=grade.upp)
order by sc_student_id;
--19查询选修“10”课程的成绩高于“1003”号同学成绩的所有同学的记录。
select c1.sc_student_id,c1.sc_score
from Sc c1 join sc c2
on(c1.sc_course_id=c2.sc_course_id and c1.sc_score>c2.sc_score)
where c1.sc_course_id='10' and c2.sc_student_id='1003'
order by c1.sc_student_id;
--20.查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
select sc_student_id,sc_course_id from sc
group by sc_student_id
having count(sc_course_id)>1
and sc_score!=max(sc_score);--------------------------
--21查询成绩高于学号为“1002”、课程号为“10”的成绩的所有记录
select * from sc
where sc_score>(select sc_score from sc
where sc_student_id=1002 and sc_course_id=32);
--22.查询和学号为1002的同学同年出生的所有学生的Sno、Sname和Sbirthday列
alter session set nls_date_format='YYYY-MM-DD';
select Student_id,student_name,student_age
from student where student_age=
(select student_age from student where student_id=1003);
--23查询“王老师“教师任课的学生成绩。1001
select sc_student_id,course.course_name,sc_score from sc
join course on (sc.sc_course_id=course_id)
join teacher on (course_teacher_id=teacher_id)
where teacher_name='王老师';
--24.查询选修某课程的同学人数多于3人的教师姓名。
select distinct teacher_name from teacher
join course on (teacher.teacher_id=course.course_teacher_id)
join sc on (sc.sc_course_id=course.course_id)
where course.course_id in
(select sc_course_id from sc
group by sc_course_id having count(sc_course_id)>3);
--25.查询15计科班和16计科班全体学生的记录
select * from student
where student_class in('15计科','16计科') ;
--26.查询存在有85分以上成绩的课程no.
select distinct sc_course_id from sc
where sc_score>85;
--27.查询出“计算机部门“的教师所教课程的成绩表。
select teacher.depart,course.course_name,teacher.teacher_name,sc.sc_student_id,sc.sc_score
from teacher
join course on teacher.teacher_id=course.course_teacher_id
join sc on sc.sc_course_id=course.course_id
where teacher.depart='计算机';
--28.查询“计算机系”与“化药系“不同职称的教师的姓名和Prof。
select a.depart,a.teacher_name,a.teacher_prof
from teacher a
where depart ='计算机' and teacher_prof not in (
select distinct teacher_prof from teacher
where depart ='文传'
);
--29.查询选修编号为“10“课程且成绩至少高于任意选修编号为“32”(54,90,80)
--的同学的成绩的Cno、Sno和Degree,并按Degree从高到低次序排序。
select sc_course_id,sc_student_id,sc_score
from sc
where sc_course_id=10 and sc_score > any
(select sc_score from sc
where sc_course_id=32
)
order by sc.sc_score desc;
--30.查询选修编号为“32”且成绩高于所有选修编号为“10”
--课程的同学的Cno、Sno和Degree.
select sc_course_id,sc_student_id,sc_score
from sc
where sc_course_id=32 and sc_score > all
(select sc_score from sc
where sc_course_id=10
)
order by sc.sc_score desc;
--31.查询所有教师和同学的name、sex和birthday.
select teacher_name,student_name,student_sex,student_age
from teacher
join course on course.course_teacher_id=teacher.teacher_id
join sc on sc.sc_course_id=course.course_id
join student on student.student_id=sc.sc_student_id;
--32.查询所有“女”教师和“女”同学的name、sex和birthday.
select teacher_name,student_name,student_sex,student_age
from teacher
join course on course.course_teacher_id=teacher.teacher_id
join sc on sc.sc_course_id=course.course_id
join student on student.student_id=sc.sc_student_id
where teacher.teacher_sex='女' and student.student_sex='女';
--33.查询成绩比该课程平均成绩低的同学的成绩表。
select * from sc
where sc_score > any
(
select avg(sc_score) from sc
group by sc_course_id
)
order by sc_course_id ;
--34.查询所有任课教师的Tname和Depart.
select teacher_id,teacher_name,depart
from teacher right join course
on teacher.teacher_id = course.course_teacher_id
where Teacher_id in(
select course_Teacher_id from course
)
order by teacher_id;
--35.查询所有未讲课的教师的Tname和Depart.(交集)
select teacher_id,teacher_name,depart
from teacher
where Teacher_id not in
(
select course_Teacher_id from course
)
order by teacher_id;
--36.查询至少有2名男生的班号。
select student_class
from student
where student_sex='男'
group by student_class
having count(student_id)>=2;
--37.查询Student表中不姓“王”的同学记录。
select *from student
where student_name not like '王%';
--38.查询Student表中每个学生的姓名和年龄。
select student_name,sysdate-year(student_age) as age
from student;
--39.查询Student表中最大和最小的Sbirthday日期值
select max(student_age),min(student_age)
from student;
--40.以班号和年龄从大到小的顺序查询Student表中的全部记录。
select *
from student
order by student_class desc,student_age ;
--41.查询“男”教师及其所上的课程。
select course_name
from course
join teacher on teacher.teacher_id=course.course_teacher_id
where teacher_sex='男';
--42.查询最高分同学的Sno、Cno和Degree列。
select * from sc
where sc_score = any
(
select max(sc_score) from sc group by sc_course_id
);
--43.查询和“小马”同性别的所有同学的Sname.
select student_name from student
where student_sex=(
select student_sex from student
where student_name='小马'
);
--44.查询和“张飞”同性别并同班的同学Sname.
select s1.student_name from student s1
inner join student s2 on (s1.student_sex=s2.student_sex and s1.student_class=s2.student_class)
where s2.student_name='张飞';
--45.查询所有选修“体育”课程的“男”同学的成绩表
select course_name,sc_score from course
join sc on course.course_id=sc.sc_course_id
join student on sc.sc_student_id=student.student_id
where course_name='体育' and student_sex='女';
select student_name,student_sex,student_id from student;
--2查询教师的所有单位即不重复的部门列
select distinct depart from teacher;
select depart from teacher group by depart;
select depart from teacher group by depart having count(*)>=1;
--3查询学生表中所有的记录
select * from student;
--4查询成绩表中60-80的记录
select * from sc where sc_score between 60 and 80;
--5查询成绩表中59,70,90的记录
select * from sc where sc_score in (59,70,90);
--6查询学生表中家在湖北省的女同学的信息
select * from student where student_address='湖北省'and student_sex='女';
--7降序查询
select * from teacher order by teacher_id desc;
--8教师号升序,部门降序
select * from teacher order by depart desc,teacher_id;
--9查询选10课人数
select sc_course_id,count(*) from sc group by sc_course_id having sc_course_id='10' ;
--10查询sc表中最高分的学生学号以及课程号
select sc_student_id,sc_course_id
from sc where sc_score =
(select max(sc_score) from sc );
--11查询10课的平均分
select sc_course_id,avg(sc_score) from sc group by sc_course_id;
--12查询sc表中至少有3名学生选修的,并以3开头的课程的平均分
select sc_course_id,avg(sc_score)from sc
where sc_course_id like '3%' group by sc_course_id having count(sc_course_id)>=3;
--13查询最低分大于70,最高分小于90 的学号
select sc_student_id from sc
group by sc_student_id having max(sc_score)<90 and Min(sc_score)>70;
--14查询所有学生的姓名,课程号,成绩
select student_name,sc_course_id,sc_score
from student left join sc on Student.student_id=sc.sc_student_id
order by student_name;
--15查询学生的学号,课程名,和成绩
select sc_student_id,course_name,sc_score
from sc join course on sc.sc_course_id=course_id
order by sc_student_id;
--16查询所有学生的姓名,课程名,成绩
select a.student_name,b.course_name,c.sc_score
from student a,course b,sc c
where a.student_id=c.sc_student_id and b.course_id=c.sc_course_id
order by a.student_name;
--
select a.student_name,b.course_name,c.sc_score
from sc c join student a on (a.student_id=c.sc_student_id)
join course b on b.course_id=c.sc_course_id
order by a.student_name;
--17查询 15计科班所选课程的平均分
select course_name,avg(sc.sc_score) from Student join sc
on (sc.sc_student_id=student.student_id)
join course on course.course_id=sc.sc_course_id
where student.student_class='15计科'
group by sc_course_id,course_name;
--18假设使用如下命令建立了一个grade表(现查询所有同学的Sno、Cno和rank列。)
CREATE TABLE grade(low number,upp number,rank varchar2(4));
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 sc_student_id,sc_course_id,sc_score,rank
from Sc join grade
on(Sc_score>=grade.low and Sc_score<=grade.upp)
order by sc_student_id;
--19查询选修“10”课程的成绩高于“1003”号同学成绩的所有同学的记录。
select c1.sc_student_id,c1.sc_score
from Sc c1 join sc c2
on(c1.sc_course_id=c2.sc_course_id and c1.sc_score>c2.sc_score)
where c1.sc_course_id='10' and c2.sc_student_id='1003'
order by c1.sc_student_id;
--20.查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
select sc_student_id,sc_course_id from sc
group by sc_student_id
having count(sc_course_id)>1
and sc_score!=max(sc_score);--------------------------
--21查询成绩高于学号为“1002”、课程号为“10”的成绩的所有记录
select * from sc
where sc_score>(select sc_score from sc
where sc_student_id=1002 and sc_course_id=32);
--22.查询和学号为1002的同学同年出生的所有学生的Sno、Sname和Sbirthday列
alter session set nls_date_format='YYYY-MM-DD';
select Student_id,student_name,student_age
from student where student_age=
(select student_age from student where student_id=1003);
--23查询“王老师“教师任课的学生成绩。1001
select sc_student_id,course.course_name,sc_score from sc
join course on (sc.sc_course_id=course_id)
join teacher on (course_teacher_id=teacher_id)
where teacher_name='王老师';
--24.查询选修某课程的同学人数多于3人的教师姓名。
select distinct teacher_name from teacher
join course on (teacher.teacher_id=course.course_teacher_id)
join sc on (sc.sc_course_id=course.course_id)
where course.course_id in
(select sc_course_id from sc
group by sc_course_id having count(sc_course_id)>3);
--25.查询15计科班和16计科班全体学生的记录
select * from student
where student_class in('15计科','16计科') ;
--26.查询存在有85分以上成绩的课程no.
select distinct sc_course_id from sc
where sc_score>85;
--27.查询出“计算机部门“的教师所教课程的成绩表。
select teacher.depart,course.course_name,teacher.teacher_name,sc.sc_student_id,sc.sc_score
from teacher
join course on teacher.teacher_id=course.course_teacher_id
join sc on sc.sc_course_id=course.course_id
where teacher.depart='计算机';
--28.查询“计算机系”与“化药系“不同职称的教师的姓名和Prof。
select a.depart,a.teacher_name,a.teacher_prof
from teacher a
where depart ='计算机' and teacher_prof not in (
select distinct teacher_prof from teacher
where depart ='文传'
);
--29.查询选修编号为“10“课程且成绩至少高于任意选修编号为“32”(54,90,80)
--的同学的成绩的Cno、Sno和Degree,并按Degree从高到低次序排序。
select sc_course_id,sc_student_id,sc_score
from sc
where sc_course_id=10 and sc_score > any
(select sc_score from sc
where sc_course_id=32
)
order by sc.sc_score desc;
--30.查询选修编号为“32”且成绩高于所有选修编号为“10”
--课程的同学的Cno、Sno和Degree.
select sc_course_id,sc_student_id,sc_score
from sc
where sc_course_id=32 and sc_score > all
(select sc_score from sc
where sc_course_id=10
)
order by sc.sc_score desc;
--31.查询所有教师和同学的name、sex和birthday.
select teacher_name,student_name,student_sex,student_age
from teacher
join course on course.course_teacher_id=teacher.teacher_id
join sc on sc.sc_course_id=course.course_id
join student on student.student_id=sc.sc_student_id;
--32.查询所有“女”教师和“女”同学的name、sex和birthday.
select teacher_name,student_name,student_sex,student_age
from teacher
join course on course.course_teacher_id=teacher.teacher_id
join sc on sc.sc_course_id=course.course_id
join student on student.student_id=sc.sc_student_id
where teacher.teacher_sex='女' and student.student_sex='女';
--33.查询成绩比该课程平均成绩低的同学的成绩表。
select * from sc
where sc_score > any
(
select avg(sc_score) from sc
group by sc_course_id
)
order by sc_course_id ;
--34.查询所有任课教师的Tname和Depart.
select teacher_id,teacher_name,depart
from teacher right join course
on teacher.teacher_id = course.course_teacher_id
where Teacher_id in(
select course_Teacher_id from course
)
order by teacher_id;
--35.查询所有未讲课的教师的Tname和Depart.(交集)
select teacher_id,teacher_name,depart
from teacher
where Teacher_id not in
(
select course_Teacher_id from course
)
order by teacher_id;
--36.查询至少有2名男生的班号。
select student_class
from student
where student_sex='男'
group by student_class
having count(student_id)>=2;
--37.查询Student表中不姓“王”的同学记录。
select *from student
where student_name not like '王%';
--38.查询Student表中每个学生的姓名和年龄。
select student_name,sysdate-year(student_age) as age
from student;
--39.查询Student表中最大和最小的Sbirthday日期值
select max(student_age),min(student_age)
from student;
--40.以班号和年龄从大到小的顺序查询Student表中的全部记录。
select *
from student
order by student_class desc,student_age ;
--41.查询“男”教师及其所上的课程。
select course_name
from course
join teacher on teacher.teacher_id=course.course_teacher_id
where teacher_sex='男';
--42.查询最高分同学的Sno、Cno和Degree列。
select * from sc
where sc_score = any
(
select max(sc_score) from sc group by sc_course_id
);
--43.查询和“小马”同性别的所有同学的Sname.
select student_name from student
where student_sex=(
select student_sex from student
where student_name='小马'
);
--44.查询和“张飞”同性别并同班的同学Sname.
select s1.student_name from student s1
inner join student s2 on (s1.student_sex=s2.student_sex and s1.student_class=s2.student_class)
where s2.student_name='张飞';
--45.查询所有选修“体育”课程的“男”同学的成绩表
select course_name,sc_score from course
join sc on course.course_id=sc.sc_course_id
join student on sc.sc_student_id=student.student_id
where course_name='体育' and student_sex='女';