MySQL 第7章 对数据表的复杂查询

第7章 对数据表的复杂查询

7-1 条件查询之比较运算符
7-2 条件查询之逻辑运算符和范围运算符
7-3 条件查询之模糊查询
7-4 条件查询之结果排序
7-5 条件查询之聚合函数
7-6 条件查询之分组查询
7-7 条件查询之Limit分页

7-1 条件查询之比较运算符

大于>
小于<
小于等于<=
大于等于>=
等于=
<>、!=不等于

7-2 条件查询之逻辑运算符和范围运算符

逻辑运算符

and 多个条件同时满足

or 多个条件其中一个满足

not 不满足

SELECT * FROM 表名 WHERE 运算符 逻辑运算符 运算符;

NOT 与其他用法不一样

SELECT * FROM 表名 WHERE NOT 运算符;

in关键字

SELECT 字段名 FROM 表名 WHERE 字段 in (数据1,数据2…);

  • select * from hero where id in (1,2,3);等价于select * from hero where id=1 or id=2 or id=3;

IN 里面的每个数据都会作为一次条件,只要满足条件就会显示

范围:

between 值1 and 值2 表示从值1到值2 的范围,包括值1.2

7-3 条件查询之模糊查询

LIKE 表示模糊查询

SELECT *FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’;

满足通配符字符串规则的数据就会显示出来

MySQL通配符有两个:

% :表示0个或者多个字符(任意字符) (%笔记本% 苹果笔记本 )

例如:把名字中含“孙”的名字全搜出来:LIKE ‘%孙%’;

_:表示一个字符   (笔记_    笔记本   笔记1)

例如:把姓孙的且名字是三个字的名字搜出来:LIKE ‘孙_ _’;

7-4 条件查询之结果排序

ORDER BY 子句,可以将查询的结果进行排序
排序只是显示方式,不会影响数据库的顺序

单列排序

语法 :SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名[ASC|DESC];

     ASC : 升序 ,默认升序
     DESC : 降序 

组合排序

当字段1的值相等时,按字段2排序

SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1[ASC|DESC],字段名2[ASC|DESC];

7-5 条件查询之聚合函数

聚合函数

聚合函数做的是纵向查询,它是对一列的值进行计算,然后返回一个结果值。聚合函数会忽略空值

五个聚合函数
     count :统计指定列记录数,记录为NULL的不统计
     sum   :计算指定列的数值和,如果不是数值类型,那么计算结果为0
     max   :计算指定列的最大值
     min   :计算指定列的最小值
     avg   : 计算指定列平均值,如果不是数值类型,那么计算结果为0   

聚合函数的使用 :

写在SQl语句 SELETC 后字段名的地方

统计有多少行数据

SELETC COUNT(*) FROM 表名;

查询年龄小于40的总数

SELECT COUNT(*) FROM hero WHERE age<40;

查询所用英雄的总评分

SELECT SUM(max_score)FROM hero

查询英雄评分的平均分

SELECT ANG(max_score) FROM hero

查询英雄评分的最高分

SELECT MAX(eax_score)FROM hero

查询英雄评分的最低分

SELECT MIN(maX_score) FROM hero

7-6 条件查询之分组查询

分组

分组查询是指使用GROUP BY语句对查询信息进行分组,相同的数据作为一组

语法:

SELECT 字段1,字段2,…… FROM 表名 GROUP BY 分组字段 [HAVING 条 件];

分组后用having进行条件过滤

SELECT * FROM hero GROUP BY sex; 这句话会将sex相同的数据作为一组,但是会返回每组的第一条,没有意义

分组的目的是为了统计,一般分组会跟聚合函数一起使用
分组后聚合函数的作用,不是操作所有数据,而是操作一组数据。

SELECT SUM(life),sex FROM hero GROUP BY sex;

注意事项:当使用某个字段分组,在查询的时候也需要将这个字段查询出来,
否则看不到数据是属于哪组的

查询年龄大于25岁的人,按性别分组统计每组的人数,并只显示性别人数大于2的数据

SELECT count(),sex from hero where age <30 GROUP BY sex HAVING
COUNT(
)>2;

having与where的区别

having 是在分组后对数据进行过滤

where 是在分组前对数据进行过滤

having 后面可以使用聚合函数

where 后面不可用使用聚合函数

7-7 条件查询之Limit分页

1、LIMIT

LIMIT是限制的意思,LIMIT的作用就是限制查询记录的条数

  SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUPBY子句] [HAVING 子句][ORDER BY 子句] [LIMIT 子句];

LIMIT子句放在最后是因为前面所有的限制条件都处理完了,只剩下显示多少条记录的问题了。

2、LIMIT语法格式:

LIMIT offset,length ; 或者 limit length;

offset 是指偏移量,可以认为是跳过的记录数量,默认为0

length 是指需要显示的总记录数

查询hero表中数据,从第三条开始显示,显示6条

SELECT * FROM students LIMIT 2 , 6;

3、LIMIT使用场景:分页

例如登录的淘宝、京东等,返回的信息有很多,不是一次全部显示出来,是一页页显示固定的条数
假设每页显示5条记录来分页,SQL语句如下:

每页显示5条

第一页:LIMIT 0,5; 跳过0条,显示5条

  • SELECT * FROM hero LIMIT 0,5;

第二页:LIMIT 5,10;跳过5条,显示5条

  • SELECT * FROM hero LIMIT 5,5;

第三页:LIMIT 10,5;跳过10条,显示5条

  • SELECT * FROM hero LIMIT 10,5;
注意:如果第一个参数是0可以简写
LIMIT 10,5;不够5条,有多少显示多少。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miraitowa_FTY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值