• SQL笔记03


    基本查询

    • SELECT * FROM <表名>
    • SELECT关键字可以直接计算, 不适用FROM关键作用: SELECT 1验证数据库是否连接成功
    • SELECT查询结果始终是个二维表

    条件查询

    • WHERE设定查询条件

    • 第一种:

      • SELECT * FROM <表名> WHERE <条件表达式>
    • 第二种:

      • 条件表达式: <条件1> AND <条件2>
      • 或者是OR满足两个条件之一就可以
    • 第三种:

      • NOT
      • 可以使用<>表示
    • NOT优先级最高, 其次是ANDOR

    • ()可以改变优先级

    • IN: SELECT * FROM students WHERE score in (90, 91);

    • The IN operator is a shorthand for multiple OR conditions.

    • BETWEEN: The BETWEEN operator is inclusive: begin and end values are included.

    • SELECT * FROM students WHERE score BETWEEN 60 AND 90;

    常用表达式条件

    • =: 相等
    • >: 大于
    • >=: 大于或相等
    • <: 小于
    • <>: 不等
    • LIKE: 判断相似: SELECT * FROM students WHERE name LIKE '%明'; %进行相似匹配

    投影查询

    • 只希望返回某些列数据
    • SELECT 列1, 列2, 列3 FROM...
    • 结果集的列表列名, 可以有别名
    • SELECT 列1 列1别名, 列2, 列2别名 FROM..

    排序

    • 查询结果通常按照主键id排序

    • ORDER BY按照从低到高排

    • 默认升序, ASC

    • 再加上DESC表示倒序

    • SELECT id, name, gender, score FROM students ORDER BY score DESC;

    • 根据两个数据, 排序时, 先根据第一个排序, 第一个相同的时候, 再根据第二个排序

    • 排序方式跟在条件WHERE后面

    分页

    • 分页通过截取实现: LIMIT <M> OFFSET <N>

    • SELECT * FROM students ORDER BY score DESC LIMIT 3 OFFSET 0;

    • 结果集从0开始, 最多取3条

    • SQL记录集的索引从0开始

      • LIMIT: 总是设定为pagesize
      • OFFSET: 计算: pagesize * (pageIndex - 1)
    • OFFSET: 超出最大值, 返回空数组

    • 注意:

      • OFFSET: 默认是0
      • MySQL: OFFSET可以省略
      • <N> 越大, 查询效率越低

    聚合查询

    • 统计总数, 平均数等计算, 可以使用聚合函数

    • COUNT(): 查询所有的列的行数

    • SELECT COUNT(*) num FROM students;: 设置别名, 便于统计

    • 聚合查询配合添加查询, 查询满足条件的列数

    • 常用聚合函数

      • SUM: 计算某一列的合计值, 该列必须是数值类型
      • AVG: 计算某一列的平均值, 该列必须是平均值
      • MAX: 计算某一列的最大值
      • MIN: 计算某一列的最小值
      • MAXMIN不限定数值类型, 如果是字符类型, 会返回排序最后和排序最前的字符
      • FLOOR: 向下取整
      • CEILING: 向上取整
    • 如果没有查询到任何数据, COUNT返回0, 其他返回NULL

    • GROUP BY: 对数据进行分组查询计算

    • SQL引擎, 不能把多个name的值放入同一行记录中. 聚合查询的列中, 只能放入分组的列

    多表查询

    • SELECT * FROM <表1> <表2>
    • 结果是两个表的乘积
    • 重复的属性名, 通过设置别名解决
    • 也可以对表, 设置别名 SELECT s.id sid, s.name, s.gender, s.score, c.id cid, c.name cname FROM students s, classes c;
    • 多表查询, 也可以添加where条件

    连接查询

    • 先确定一个主表作为结果集, 其他表有选择的连接到主表
    • 内连接查询 INNER JOIN
      1. 确定主表 FROM <表1>
      2. 确定需要连接的表: INNER JOIN <表2>
      3. 确定连接条件: ON <条件1>
      4. 可选: 使用WHERE, ORDER BY
    • 外连接: LEFT OUTER JOIN
    • 包含关系:
      • INNER: 两张表都存在的数据
      • LEFT OUTER JOIN: 左表存在的数据
      • RIGHT OUTER JOIN: 右表存在的数据
      • FULL OUTER JOIN: 左右都存在的数据 MySQL不支持

    FROM x, y使用笛卡尔积, 效率低, 所以不能用WHERE替代内连接运算

  • 相关阅读:
    学习进度笔记06
    学习进度笔记05
    学习进度笔记04
    学习进度笔记03
    学习进度笔记02
    周总结13
    周总结12
    周总结11
    人月神话阅读笔记3
    第一阶段冲刺10
  • 原文地址:https://www.cnblogs.com/zhangrunhao/p/13181230.html
Copyright © 2020-2023  润新知