梁程晴

2020-07-11   阅读量: 858

Mysql

SQL查询语句(二)

扫码加入数据分析学习群

单表查询

  • 全表查询:select * from 表名;

  • 查询指定列:select 字段1[,字段2,…] from 表名;

  • 别名的设置:select 字段名[ as] 列别名 from 原表名 [as ]表别名;

  • 查询不重复的记录:select distinct 字段名 from 表名;

  • 条件查询:select 字段1[,字段2,…] from 表名 where 查询条件;

  • 空值查询:select 字段1[,字段2,…] from 表名 where 空值字段 is[ not] null;

  • 模糊查询: select 字段1[,字段2,…] from 表名 where 字符串字段[ not] like 通配符;

    • 百分号(%)通配符:匹配0个或多个字符

    • 下划线(_)通配符:匹配一个字符

    • !模糊查询只能用于字符串类型的字段

  • 查询结果排序:select 字段1[,字段2,…] from 表名 order by 字段1[ 排序方向,字段2 排序方向,…];

    • 多字段排序时,先按第一个字段排序,第一个字段值相同时再按第二个字段排序

    • 指定排序方向:asc升序,desc降序(没有指定排序方向时,默认是asc升序)

  • 限制查询结果数量:select 字段1[,字段2,…] from 表名 limit [偏移量,] 行数;

    • limit接受一个或两个数字参数,参数必须是一个整数常量

    • 第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目

    • 如果只给定一个参数,表示返回最大的记录行数目

    • 初始记录行的偏移量是0(而不是1)

  • 分组查询:select 字段1[,字段2,…] from 表名[ where 查询条件] group by 分组字段1[,分组字段2,…];

  • 将查询结果按照一个或多个字段进行分组,字段值相同的为一组,对每个组进行聚合计算

  • 分组后筛选:select 字段1[,字段2,…] from 表名[ where 查询条件][ group by 分组字段1[,分组字段2,…]] having 筛选条件;

    where与having的区别:

    • where子句作用于表,having子句作用于组。

    • where条件查询的作用域是针对数据表进行筛选,而having条件查询则是对分组结果进行过滤。

    • where在分组和聚合计算之前筛选行,而having 在分组和聚合之后筛选分组的行,因此where子句不能包含聚合函数。

多表查询

通过不同表中具有相同意义的关键字段,将多个表进行连接,查询不同表中的字段信息连接方式

内连接和外连接(左连接和右连接)

  • 内连接:select 字段1[,…] from 表1[ inner] join 表2 on 表1.key=表2.key;

  • 外连接

    • 左连接:select 字段1[,…] from 表1 left join 表2 on 表1.key=表2.key;

    • 右连接:select 字段1[,…] from 表1 right join 表2 on 表1.key=表2.key;

多表连接的结果通过三个属性决定

  • 方向性:在外连接中写在前边的表为左表、写在后边的表为右表

  • 主附关系:主表要出所有的数据范围,附表与主表无匹配项时标记为null,内连接时无主附表之分

  • 对应关系:关键字段中有重复值的表为多表,没有重复值的表为一表

联合查询

  • union去重:select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名;

  • union all不去重: select 字段1[,字段2,…] from 表名 union all select 字段1[,字段2,…] from 表名;

34.9386 5 3 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子