1.查询结果过滤和排序

  • distinct
    当一个属性值有多条记录时,使用distinct来指定返回一条记录
  • group by
    按照某个属性对结果进行分组
  • order by
    根据某个属性对结果进行排序,可升序(ASC),可降序(DESC),对于文字,升降序是按照文本的字母顺序
  • limit
    指定返回返回多少行
  • offset
    指定从哪一行开始返回

2.多表查询

  • 数据库范式(normalization)
    是数据表设计的规范,在范式的规范下,数据表存储的重复数据降到最低,同时表间不再有很强的数据耦合
  • 主键
    唯一标识一条数据的属性,借助主键(或其他属性),可以把多个表连接起来
  • inner join(可简写为join)


这种连接方式只保留每个表都共有的数据

  • left outer join(简写为left join)

表A连接表B,只保留表A的所有行

  • right outer join(简写为right join)

表A连接表B,只保留表B的所有行

  • full outer join(简写为full join)

表A连接表B,同时保留表A和表B的所有行

  • Null
    表示“无”、“没有东西”,0会参与计算,而Null则不会,在一些难以避免出现Null的情景,使用is Nullis not null来进行筛选
  • 可以在查询中使用表达式,如根据日期计算年龄,对某个属性进行计算等,每种数据库都有自己的一套函数,具体可参考相关文档
  • 为表达式或者属性名甚至表名赋予一个别名使用关键字as

3.在查询中进行统计

  • 常见统计函数

(更多统计函数请参见各数据库文档)

  • 分组统计
    把统计函数和group by结合,就是对分组内的数据进行统计
  • 通常,我们先对数据做where,然后分组,对分组完的数据进行筛选请使用having

4.查询的执行顺序

深刻理解SQL的执行顺序能更好地解决数据问题

🧐🧐看似寻常最奇崛,成如容易却艰辛🧐🧐

posted on 2021-10-26 12:02  KK的备忘录  阅读(29)  评论(0)    收藏  举报