Mysql 关键字的优先级 分组 多表联查

查看模式

select @@global.sql_mode;

关键字的优先级

  1. from 来自
  2. where 条件
  3. group by 分组
  4. having 筛选
  5. select 查询
  6. distinct 去重
  7. order by 排序
  8. limit 限制条数

表单查询语法

select 字段,字段 from 表名 where 条件 group by 分组 having 筛选 order by 排序 limit 限制

where

  • 比较运算 > < >= <= <> !=

  • 值在 80-100 之间 包含 80 100

    between 80 and 100;
  • 值 是 80,90,100 的

    in(80,90,100) 相反的not in(80,90,100)
  • 模糊查询

    like '张%' % 通配符 包含一个或多个 // 查询姓张的人like '程咬_' _ 包含一个字符

group by 分组

  • 经过分组之后只能查看当前字段,如果想查看组内信息需要借助于聚合函数

  • 聚合函数

    max() 求最大值min() 求最小值avg() 求平均值sum() 求和count() 求总个数
  • 拼接分组后的内容

    group_concat(name)

having 筛选

  • 用在 group by 之后

order by 排序

order by age ASC; 默认升序order by age desc; 降序排列

limit

  • 限制查询次数

    limit 0, 5 ; 0 表示起始索引 5 表示显示条数 

多表查询

  • 交叉连接

    select * from table_1,table_2; 生成笛卡尔积
  • 内连接

    只获取匹配的数据select 表名.列名, 表名.列名 from 表1 inner join 表2 on 条件(表1.列 = 表2.列);
  • 左连接

    只显示左表所有的记录select 表名.列名, 表名.列名 from 表1 left join 表2 on 条件(表1.列 = 表2.列);
  • 右链接

    只显示 右 表所有的记录select 表名.列名, 表名.列名 from 表1 right join 表2 on 条件(表1.列 = 表2.列);
  • 全外连接

    左连接 union 右链接

子查询

in ; not in ; any ; all; exists; not exists; 

相关文章