45基础SQL语句

--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='女';


猜你喜欢

转载自blog.csdn.net/Bieber0301/article/details/80384077