zoukankan      html  css  js  c++  java
  • mysql-查询

    条件查询(WHERE条件过滤是对所有记录过滤)

    SELECT 字段1, ... FROM 数据表名 WHERE 条件

    子查询

    SELECT 字段1, ... FROM 数据表名 WHERE id IN (SELECT 字段2, ... FROM 数据表名 WHERE 条件)

    排序

    SELECT 字段1, ... FROM 数据表名 ORDER BY id DESC

    模糊查询

    SELECT 字段1, ... FROM 数据表名 WHERE name like '_轩%'

    去重

    SELECT DISTINCT 字段1, ... FROM 数据表名 ORDER BY id DESC

    分组+函数+分组结果过滤(HAVING过滤是对分组结果过滤,WHERE优先级高于HAVING)

    函数:SUM,AVG,COUNT等

    SELECT 字段1, COUNT(字段2) as count FROM 数据表名 GROUP BY 字段1 HAVING count>1;
    字段1 count
    男    10
    女    11
    

    连表查询&笛卡尔积

    参考1
    参考2
    ON:连表条件,满足条件的加入最终结果集
    驱动表:第一个需要查询的表,执行查询的策略与普通表查询一致
    被驱动表:驱动表结果集中的每一条记录分别到被驱动表中找匹配项

    • 内连接:`SELECT a.field1, b.field1 FROM a INNER JOIN b ON a.id=b.a_id,a为驱动表,b为被驱动表,将所有满足ON条件的记录插入最终结果集
    • 左连接:SELECT a.field1, b.field1 FROM a LEFT JOIN b ON a.id=b.a_id,a为驱动表,b为被驱动表,驱动表没有在被驱动表中找到满足ON条件的记录则创建一条被驱动表字段为空的记录
    • 右连接:SELECT a.field1, b.field1 FROM a RIGHT JOIN b ON a.id=b.a_id,a为被驱动表,b为驱动表,驱动表没有在被驱动表中找到满足ON条件的记录则创建一条被驱动表字段为空的记录
    id a1     id b1 a_id
    1  !       1  #   1
    2  @
    

    SELECT a.id as a_id,a.a1 as a1,b.b1 as b1 FROM a LEFT JOIN b ON a.id=b.a_id

    a_id a1 b1
    1    !  #          // 驱动表a第一条记录在被驱动表b中找到了1条满足ON条件的记录,并且将这条记录插入到最终结果集
    2    @  NULL       // 驱动表a第二条记录在被驱动表b中找到了0条满足ON条件的记录,并且将这条记录插入到最终结果集,并且以NULL的形式将被驱动表数据补全
    

    3表联查

    参考
    可以理解为多个步骤

  • 相关阅读:
    Linux命令-查看进程
    Linux命令-查看内存
    Linux命令---vim
    oracle分页查询按日期排序失败问题
    oracle使用between and边界问题
    给大家介绍一个自我感觉好用的网站
    想学习一下微服务
    oracle获取年、月、日
    mybatis返回map结果集
    修改表中列
  • 原文地址:https://www.cnblogs.com/bonus_scene/p/15178340.html
Copyright © 2011-2022 走看看