第7章 单表数据查询
7.1 无条件数据查询
7.1.1 简单数据查询
关键字
SELECT...FROM...
语法:
SELECT
`查询字段1 `,
`查询字段2 `,
`查询字段3 `,
……
`查询字段n `
FROM `表名`;
示例
说明:
- 对于简单的数据查询,应使用SELECT…FROM这样的命令,但需要注意,这样会查询出表中所有的数据,因为没有查询条件。
- 在进行数据查询时,必须明确写出需要查询的字段,而不能使用星号*。
7.1.2 过滤重复数据
关键字:
DISTINCT
语法:
SELECT DISTINCT 字段名 FROM 表名;
示例:
说明:
DISTINCT是用来去除某个字段的重复数据,只取得某个字段不重复的数据。
7.2 有条件数据查询
7.2.1 带关系运算符的条件数据查询
关键字:
大于:>
大于等于:>=
小于:<
小于等于:<=
不等于:<>
语法:
SELECT
`查询字段1 `,
`查询字段2 `,
`查询字段3 `,
……
`查询字段n `
FROM `表名`
WHERE `条件字段1` = '条件字段1的值'
AND `条件字段2` > '条件字段2的值',
AND `条件字段3` <> '条件字段3的值',
……
AND `条件字段n` < '条件字段n的值';
示例:
7.2.2 带逻辑运算符的条件数据查询
关键字:
AND
OR
语法:
SELECT
`查询字段1 `,
`查询字段2 `,
`查询字段3 `,
……
`查询字段n `
FROM `表名`
WHERE `条件字段1` = '条件字段1的值'
OR `条件字段2` = '条件字段2的值',
示例:
7.2.3 带BETWEEN AND关键字的范围查询
关键字:
BETWEEN……AND……
语法:
SELECT
`查询字段1 `,
`查询字段2 `,
`查询字段3 `,
……
`查询字段n `
FROM `表名`
WHERE `条件字段1` = '条件字段1的值'
AND `条件字段2` BETWEEN '条件字段2的值1' AND '条件字段2的值2'
OR `条件字段3` BETWEEN '条件字段3的值1' AND '条件字段3的值2';
示例:
7.2.4 带IS NULL关键字的空值查询
语法:
WHERE `字段` IS NULL
示例:
说明:
IS NULL是用于筛选表中某个字段的值为NULL的数据。
7.2.5 带IN关键字的集合查询
语法:
WHERE `字段` IN ('内容1','内容2','内容3'……,'内容n')
示例:
说明:
IN关键字用于筛选某个字段满足某些条件的数据。
7.2.6 带LIKE关键字的模糊查询
语法:
WHERE `字段` LIKE '%部分内容%'
WHERE `字段` LIKE '%部分内容'
WHERE `字段` LIKE '部分内容%'
示例:
说明:
LIKE关键字用于筛选某个字段包括某一部分内容的所有数据。
7.3 数据查询结果排序
7.3.1 按升序排序
关键字:
ORDER BY `字段`;
ORDER BY `字段` ASC;
示例:
说明:
MySQL按照升序的方式默认排序。
7.3.2 按倒序排序
关键字:
ORDER BY `字段` DESC
示例:
说明:
如果需要按照降序排序,需要在代码中明确指定。
7.4 限制数据记录查询数量
7.4.1 不指定初始位置
关键字:
LIMIT n
n: 数据条数
示例:
数据库里所有数据:
查询语句:
查询结果:
说明:
limit用于限制查询需要返回的数据条数。
7.4.2 指定初始位置
关键字:
LIMIT [m,] n
m: 下标起始位置
n: 数据条数
示例:
数据库里所有数据:
查询语句:
查询结果:
说明:
LIMIT m, n 指的是从m下表开始,返回n条数据(数据表的下表从0开始)
7.5 统计函数和分组数据查询
7.5.1 MySQL支持的统计函数
- MAX
取得某个字段的最大值
- MIN
取得某个字段的最小值
- COUNT
取得查询记录的总条数
- AVG
查询某个字段的平均值
- SUM
查询某个字段的合计
7.5.2 分组数据统计——单字段分组查询
关键字:
GROUP BY `字段`
示例:
订单表的数据如下:
SODevice指的是客户使用什么设备下的订单,如果需要统计使用移动端(Mobile)和PC端的各自的订单数量并按照倒序排序时,就相当于按照订单下单设备(SODevice)的类型进行分组后,再计算不同设备的合计。
SQL语句如下:
Paste_Image.png结果如下:
说明:
- group by常用和聚合函数一块使用。
- select指定的字段,要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
7.5.3 分组数据统计——多字段分组查询
关键字:
GROUP BY `字段1`, `字段2`, ……, `字段n`
示例:
订单表的数据如下:
需要查询出每个省下的每个市在5月29日到5月30日(含5月30日)的订单总数,并按照订单总数倒序排序。
SQL语句如下:
查询结果如下:
7.5.4 分组数据统计——实现HAVING子句限定分组查询
关键字:
HAVING `字段1` option 'value'
示例:
订单明细表的数据如下:
需要从订单明细表取得2017年5月29日到2017年5月30日(含5月30日)商品销售数量大于2的每个商品的销售数量,并按照销售数量倒序排序。
SQL语句:
说明:
HAVING相当于WHERE,不同的是HAVING过滤的是经过分组统计后的数据。