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

时间:2023-03-09 00:24:44
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;