• sql语言复习:讨论在学生-学习-课程表上


    一.在依然的比较简单熟稔的学生-学习-课程表中讨论:

    1.检索至少选修1门课程的女学生的姓名。

    分析:很明显可以用统计函数count(),有选修,有姓名,涉及到学习表和学生表。

    检索至少选修1门课程的学生的姓名

    select sname
    from student,sc
    where student.sno=sc.sno and ssex='女'
    group by student.sno
    having count(*)>=1;
    

      

    2.检索龙同学不学的课程的课程号。

    分析:字符串模糊匹配用like

    /*检索龙同学不学的课程的课程号*/
    select cno
    from c
    where cno not in
    (select cno 
    from sc,student
    where sc.sno=student.sno and sname like '龙%');
    

      

    3.检索至少选修两门课程的学生学号。

    分析:where语句中万万不能加上统计函数(count(),sum())哦。集合函数要么是出现在最开头的select语句中,要么是出现在having语句中的。

    /*检索至少选修两门课程的学生学号*/
    select distinct sno
    from sc
    group by sno
    having count(*)>=2;
    

    4.检索全部学生都选修的课程的课程号与课程名。

    分析:基本上吧,考试的时候一定会考一道除法查询题------>"全部","所有","至少同时包含"(所有后面紧跟着的是名词!)的十有八九。顺序呀可能就是5道题的正中间第3道题目哦2333!

    /*检索全部学生都选修的课程的课程号与课程名*/
    select cno,cname
    from c
    where not exists
    (select * from student where not exists
    (select * from sc where sno=student.sno and cno=c.cno));
    

      

    5.统计有学生选修的课程门数。

    分析:统计类问题是会考的,一般是在五道小题的第4小题吧2333

    /*统计有学生选修的课程门数*/
    select count(distinct cno)
    from sc;
    

    6.求学分为2的每门课程的学生平均成绩。

    分析:求学分为2的每门课程的学生平均成绩。"每门","各门"这两个字要圈起来划重点这是要考的嘤嘤嘤。每门各门,当即放下一个group by 2333.

    /*求学分为2的每门课程的学生平均成绩*/
    select avg(grade)
    from sc,c
    where sc.cno=c.cno and ccredit='2'
    group by sc.cno
    

     7.

    统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选课人数,查询结果按人数降序排列,若人数相同,按课程号
    升序排列

    分析:每门每门,继续group by哦,同时呀,超过就是大于就是'>'。

    /*统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选课人数,查询结果按人数降序排列,若人数相同,按课程号
    升序排列*/
    select cno,count(sno)
    from sc
    group by cno
    having count(sno)>3#超过就是大于嘤嘤嘤
    order by count(sno) desc,cno;
    

      

    8.检索学号比‘思思’同学大而年龄比她小的学生姓名。

    分析:嵌套循环走起来

    /*检索学号比‘思思’同学大而年龄比她小的学生姓名*/
    select sname
    from student 
    where sno>(select sno from student where sname='思思')
    and sage<(select sage from student where sname='思思');
    

      

    9.检索姓名以'龙'开头的所有学生的姓名和年龄。

    分析:like

    /*检索姓名以'龙'开头的所有学生的姓名和年龄*/
    select sname,sage
    from student
    where sname like '龙%';
    

      10.在sc中检索成绩为空值的学生学号和课程号。

    /*在sc中检索成绩为空值的学生学号和课程号*/
    select sno,cno
    from sc
    where grade is null;
    

      11.求年龄大于女学生平均年龄的男学生姓名和成绩。

    /*求年龄大于女学生平均年龄的男学生姓名和成绩*/
    select sname,grade
    from sc,student
    where sc.sno=student.sno and ssex='男'
    and sage>(select avg(sage) from student where ssex='女');
    

      12.

    求年龄大于所有女学生年龄的男学生姓名和成绩
    /*求年龄大于所有女学生年龄的男学生姓名和成绩*/
    select sname,grade
    from sc,student
    where sc.sno=student.sno and ssex='男'
    and sage>(select max(sage) from student where ssex='女');
    

      13.检索选修2号课程的学生中成绩最高的学生的学号

    分析:拒绝无线套娃嘿嘿

    /*检索选修2号课程的学生中成绩最高的学生的学号*/
    select sno
    from sc
    where cno='2' and grade=(select max(grade) from sc where cno='2');
    

      

    14.

  • 相关阅读:
    机器学习之大数据集
    机器学习之协同过滤算法(推荐系统)
    机器学习之异常检测
    机器学习之PCA主成分分析
    机器学习之K-means算法
    机器学习之SVM支持向量机
    机器学习之模型选择与改进
    springmvc spring mybatis插入mysql中文乱码
    springmvc和http404错误
    oracle删除users表空间
  • 原文地址:https://www.cnblogs.com/dragondragon/p/12517936.html
Copyright © 2020-2023  润新知