数据库———数据查询

  1. 查询年级为的所有学生的名称,按编号升序排列
    Select sid,sname
    From STUDENTS
    Where grade=‘1’
    Order by sid;

  2. 查询学生的选课成绩合格的课程成绩,并把成绩换算为积点
    Select sid,cid,(score-60)*0.1+1 as jidian
    From CHOICES
    Where score>=60;–不包括成绩为null的选课记录

  3. 查询课时是或的课程的名称
    Select cname
    From COURSES
    Where hour=30 or hour=60;

  4. 查询所有课程名中含有“数”的课程编号
    Select cid
    From COURSES
    Where cname Like ‘%数%’;

  5. 查询所有选课记录的课程号(不重复显示)
    select distinct cid
    from CHOICES;

  6. 统计所有老师的平均工资
    Select AVG(salary) as avgSalary
    From TEACHERS;

  7. 查询所有学生的编号、姓名和平均成绩,按照总平均成绩降序排列
    Select sid,Avg(score) as avgScore
    From CHOICES
    Group by sid
    Order by avgScore Desc;

  8. 统计各个课程的选课人数和平均成绩
    Select cid,COUNT(sid) as numOfPerson,AVG(score) as avgScore
    From CHOICES
    Group by cid;

  9. 查询至少选修了两门课程的学生编号
    Select sid
    From CHOICES
    Group by sid
    Having COUNT(sid)>=2;

  10. 查询编号S244157的学生所选择的全部课程的课程名和成绩
    Select cname,score
    From COURSES,CHOICES
    Where COURSES.cid=CHOICES.cid and sid=‘S244157’;

  11. 查询所有选了数据库的学生的编号
    Select sid
    From CHOICES,COURSES
    Where CHOICES.cid=COURSES.cid and cname=‘数据库’;

  12. 求出选择了同一个课程的学生对
    Select A.sid as stu1,B.sid as stu2
    From CHOICES A,CHOICES B
    Where A.cid=B.cid and A.no<B.no;

  13. 求出至少被两名学生选修的课程编号
    Select cid
    From CHOICES
    Group by cid
    Having COUNT(*)>=2;

  14. 查询选修了编号S244157的学生所选的某个课程的学生编号(包含S244157这个学生)
    Select distinct A.sid–若某学生选修了S244157所选的多门课程,这个学生的学号就会出现多次,故用distinct
    From CHOICES A,CHOICES B
    Where A.cid = B.cid and B.sid=‘S244157’;

  15. 查询学生的基本信息及选修课程编号和成绩
    Select STUDENTS.*,cid,score
    From STUDENTS Left Outer Join CHOICES On (CHOICES.sid=STUDENTS.sid);

  16. 查询学号S244157的学生的姓名和选修的课程名称及成绩
    Select sname,cname,score
    From STUDENTS,CHOICES,COURSES
    Where STUDENTS.sid=CHOICES.sid and CHOICES.cid=COURSES.cid
    and STUDENTS.sid=‘S244157’;

  17. 查询学号S244157的学生同年级的所有学生的资料
    Select A.*
    From STUDENTS A,STUDENTS B
    Where A.grade=B.grade and B.sid=‘S244157’;

  18. 查询所有的有选课的学生的详细信息
    Select *
    From STUDENTS
    Where sid In(select sid
    from CHOICES);
    或:
    Select distinct STUDENTS.* --如果是查询学号姓名写为(只写一个distinct)
    From STUDENTS,CHOICES – distinct STUDENTS.sid,STUDENTS.sname
    Where STUDENTS.sid=CHOICES.sid; --利用连接去掉未选课的学生记录

  19. 查询没有学生选的课程的编号
    Select cid
    From COURSES
    Where cid Not In(
    Select cid
    From CHOICES);

  20. 查询选修了课程名为C语言的学生学号和姓名
    Select STUDENTS.sid,STUDENTS.sname
    From STUDENTS,CHOICES,COURSES
    Where STUDENTS.sid=CHOICES.sid and CHOICES.cid=COURSES.cid
    and cname=‘C语言’;

  21. 找出选修课程成绩最差的选课记录
    Select *
    From CHOICES
    Where score=(
    Select MIN(score)
    From CHOICES);

  22. 找出选修课程成绩最差的选课记录
    Select *
    From CHOICES
    Where score=(
    Select MIN(score) --null与任何数比较大小都返回unknown,所以不是最小值
    From CHOICES);
    –或
    Select *
    From CHOICES
    Where score<=All(
    Select score --查询结果中含null,不存在一个值小于null,
    From CHOICES --∴要找到最小值必须去掉null
    Where score is not null);
    错误:
    Select *
    From CHOICES
    Where score=MIN(score);–聚合不应出现在WHERE 子句中,除非该聚合位于HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用

  23. 找出和课程”C语言“或课程”操作系统“的课时一样的课程名称(包括两者)
    Select cname
    From COURSES
    Where hour =some(–或将“=some”改成in
    Select hour
    From COURSES
    Where cname=‘C语言’ or cname=‘操作系统’);

  24. 查询所有选修编号C153488的课程的学生的姓名。
    Select sname
    From STUDENTS,CHOICES
    Where STUDENTS.sid=CHOICES.sid and cid=‘C153488’;

  25. 查询选修了所有课程的学生姓名。
    Select sname
    From STUDENTS
    Where Not Exists(
    Select *
    From COURSES as X
    Where Not Exists(
    Select *
    From CHOICES as Y
    Where Y.sid=STUDENTS.sid and Y.cid=X.cid
    )
    );

  26. 利用集合运算,查询选修课程”数据结构“或课程“数据库”的学生的编号。
    Select sid
    From CHOICES
    Where cid=(
    Select cid
    From COURSES
    Where cname=‘数据结构’)
    Union
    Select sid
    From CHOICES
    Where cid=(
    Select cid
    From COURSES
    Where cname=‘数据库’);

  27. 实现集合交运算,查询既选修课程”计算机网络“又选修课程”C语言“的学生的编号。
    Select sid
    From CHOICES
    Where cid=(
    Select cid
    From COURSES
    Where cname=‘计算机网络’)
    Intersect
    Select sid
    From CHOICES
    Where cid=(
    Select cid
    From COURSES
    Where cname=‘C语言’);

  28. 实现集合减运算,查询选修课程C语言而没有选修课程”计算机网络“的学生的编号。
    Select sid
    From CHOICES
    Where cid=(
    Select cid
    From COURSES
    Where cname=‘C语言’)
    Except
    Select sid
    From CHOICES
    Where cid=(
    Select cid
    From COURSES
    Where cname=‘计算机网络’);

猜你喜欢

转载自blog.csdn.net/qq_44378854/article/details/107042048