exam.sql

操作符

  • distinct
  • in
  • not in
  • group by
  1. distinct:关键词 DISTINCT 用于返回唯一不同的值。

    1. SELECT DISTINCT subject FROM grade ;
  2. IN 操作符允许我们在 WHERE 子句中规定多个值。

    1. SELECT * FROM student WHERE name IN ('孔子','孟子')
  3. not in:不包含

    1. SELECT * FROM student WHERE name not IN ('孔子','孟子')
  4. GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

    1. select subject,sum(score) from grade group by subject

1.查询grade表 去重科目
2.使用in查询查询student这个表里面的name 是老子和孟子的
3.使用not in查询student表里面 name不是屈原和嬴政的
4.使用group by 去查询grade表里面科目的总分

聚合函数

  • avg()
  • count()
  • min()
  • max()
  • sum()
  1. AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

    1. SELECT avg(score) FROM grade
  2. COUNT() 函数返回匹配指定条件的行数。

    1. SELECT count(score) FROM grade
  3. MIN 函数返回一列中的最小值。NULL 值不包括在计算中。

    1. SELECT min(score) FROM grade
  4. MAX 函数返回一列中的最大值。NULL 值不包括在计算中。

    1. SELECT max(score) FROM grade
  5. SUM 函数返回数值列的总数(总额)。

    1. SELECT sum(score) as total FROM grade

    1.查询grade表下面的score 的平均值
    2.查询grade表下面语文的平均值
    3.查询grade表下面语文还有英语的平均值
    4.查询grade表下面语文大于60的由多少人
    5.查询grader表下面的英语的最高分是多少
    6.查询grade表下面数学的最低分是多少
    7.查询grade表下面 语文科学的总分是多少

组合查询

  • join
  • left join
  • right join
  1. join有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起

    1. select s.name,s.age,g.subject,g.score from grade as g,student as s where s.id = g.s_id
  2. left join 以左边的表为基准

    1. select s.name,s.age,g.subject,g.score from grade as g left join student as s on s.id = g.s_id
  3. right join 以右边的表为基准

    1. select s.name,s.age,g.subject,g.score from grade as g right join student as s on s.id = g.s_id

1.查询语文成绩前两名的学生名称
2.查询语文大于60的学生名称
3.查询学生id为1的学生的分数平均值 (各个科目总分/科目)
4.查询学生的语文成绩,并按照倒序排名
5.查询科目70分以上的学生名称还有年龄