MySQL入门(二)

  • 数据准备
number name age class grade
201804001 刘一 16 19 二年级
201804002 陈二 19 18 一年级
201804003 张三 20 19 二年级
201804004 李四 17 19 一年级
201804005 王五 18 19 三年级
201804006 赵六 24 18 二年级
201804007 孙七 22 19 三年级
201804008 周八 21 19 二年级
201804009 吴九 25 18 一年级
201804010 郑十 23 19 一年级
201804011 小周周 20 18 二年级
201804012 周周周 21 19 三年级

筛选条件

  • 比较运算符
    等于:=
    大于等于:>=
    小鱼等于:<=
    大于:>
    小于:<
    不等于:!=或<>
    IS NULL
    IS NOT NULL
  • 逻辑运算符
    与:and
    或:or
    非:not
    查找16到20岁的学生select columns from table_name where age>=16 and age<=20;
  • 其他操作
    排序(order by)SELECT columns FROM tb_name ORDER BY columns desc;正序:asc(默认)倒序:desc
    限制个数(limit)SELECT columns FROM tb_name LIMIT start, count ;LIMIT count;
    去重(distinct)SELECT DISTINCT columns FROM tb_name;
    模糊查询(like'%')select columns from table_name where name like '%周_';注:%表示任意多个字符;_表示任意一个字符
  • 范围查询
    连续范围: BETWEEN a AND b
    select columns from table_name where age BETWEEN 16 and 20;
    间隔返回: IN
    select columns from table_name where column in(X,X,X);

聚合与分组

  • 常用聚合函数
    统计个数:COUNT(column)select count(name) from student;
    求和:SUM(column)
    最大值:MAX(column)
    平均值:AVG(column)
    最小值:MIN(column)
    列出字段全部值:GROUP_CONCAT(column)select group_concat(age) from student;
  • 分组查询(group by)
    Select 字段 from 表 group by 字段;select class from student group by class;
    Select 字段,count(*) from 表 group by 字段;select class,count(*) from student group by class;
    在分组的情况下,只能够出现分组字段和聚合字段,其他的字段没有意义,会报错!
  • 聚合筛选(having)
    select class from student group by class,age having age>=18;
    加having条件表达式,可以对输出的结果做出限制,having有分组的作用
    假如说一个查询语句中同时包含了别名(as),聚合函数, where, having
    select * from (select class,count(*) from student where age >=20 group by class,age having age>=21) as b;
    统计年龄大于等于20岁的不同班级的学生的数量,对于统计的结果再统计年龄大于等于21的学生,把年龄相同的学生归类到一起,最后把结果命名为表b展示出来
    那么他们的执行顺序是
    先是执行:where
    然后执行:聚合函数和别名
    最后执行:having

子查询(了解)

将一个查询的结果留下来用于下一次查询 ( select 中嵌套 select )


MySQL入门(二)_第1张图片

链接查询(了解)

  • 内连接(inner join)
    • 无条件内连接:
      无条件内连接,又名交叉连接/笛卡尔连接
      第一张表种的每一项会和另一张表的每一项依次组合
      Mysql> select * from student [inner] join scoren
    • 有条件内连接:
      在无条件内链接的基础上,加上一个on子句
      当连接的时候,筛选出那些有实际意义的记录来进行组合
      Mysql> select * from student inner join scoren
      -> on dept_id = id;
  • 外连接({left | right} join)
    • 左外连接: (以左表为基准)
      两张表做连接的时候,在连接条件不匹配的时候
      留下左表中的数据,而右表中的数据以NULL填充
      mysql> select * from student left join department
      -> on dept_id= d_id;
    • 右外连接: (以右表为基准)
      对两张表做连接的时候,在连接条件不匹配的时候
      留下右表中的数据,而左表中的数据以NULL填充
      mysql> select * from student right join department
      -> on dept_id= d_id;

作业
从课堂上演示的students表里面
统计出所有人数
统计出age大于18的人数
统计出学python的人数
统计出学java的age大于18的人数

你可能感兴趣的:(MySQL入门(二))