Mysql基础(七)DQL之select 语句(二)

一  select 语句

WHERE子句后面'跟着'的是'一个或多个条件',用于指定需要'检索的行'

COUNT(): 多少'条'数据

where 1=1 和 count(1) 与 count(*)

count(1)、count(*)和count(指定字段)之间的区别

①  order by 排序

mysql 之数据排序扩展

1、使用 'order by' 语句来实现'排序'

2、排序可针对'一个'或'多个'字段

3、ASC: 升序,'default 默认'排序方式    -->  'ascending'

4、DESC:降序                         -->  'descending order'

5、order by的'语法'结构

select 字段1,字段2 from '表名' order by '字段1 desc|asc','字段2 desc|asc';

细节点:order by 也可以通过 'where 子句' 对查询结果进行进一步的过滤​

重点: 通过在SELECT语句中添加 'ORDER BY' 子句来对'结果集'进行排序

原理:

  1)使用select语句可以将'需要的数据'从 mysql 数据库中'查询出来'

  2)如果对'查询的结果'进行排序操作,可以使用 'order by' 语句完成'排序'

  3)并且最终将排序后的结果'返回'给客户

重点:使用'CASE'语句'自定义'排序规则

②  limit 限制查询结果

注意:   在MySQL中,LIMIT子句和OFFSET子句的顺序是'固定'的,先写LIMIT再写OFFSET

场景:  有时候我们'只'需要检索'结果集的前几行'或'特定范围内'的数据

需求1: 可以使用LIMIT子句来限制'结果集'的大小

具体:只返回前'2条'记录

SELECT id, name FROM customers LIMIT 2;

需求2:们也可以使用'OFFSET子句'来指定结果集的'起始'位置,默认是'0'

例如: 但从'第2'记录开始,只返回'10条'记录

SELECT id, name FROM customers LIMIT 2 OFFSET 21;

注意: 在MySQL中LIMIT子句和OFFSET子句的顺序是'固定'的,先写LIMIT再写OFFSET

++++++++++++++++  "分割线"  ++++++++++++++++

补充: 限制从第1行开始,最多返回2行,结果返回了第1~2行

使用SELECT * FROM user LIMIT 0, 2;

③  group by 分组子句

select 分组函数,列 (要求出现在group by的后面)
from 表
【where 筛选条件】   --  '分组前'的筛选条件
group by 分组的列表  --  '分组'
【order by 子句】
having             --  '分组后'的筛选用having而'不是'where

作用是通过一定的规则将一个数据集划分成'若干个小的区域',然后针对'若干个小区域'进行数据处理

细节点:'该列'必须'包含'在聚合函数或 'GROUP BY' 子句中 --> '类(集合)'

group by 深入学习    分组查询的基础

--  姓名,部门,薪水,入职日期

create table if not exists deploy (
  id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name varchar(11) COMMENT '名字',
  dept varchar(20) NOT NULL,
  salary int NOT NULL,de date
) default character set utf8;

insert into  deploy  values(1,'张三','开发部',4000,'2015-09-28');
insert into  deploy  values(2,'李四','设计部',4500,'2010-10-15');
insert into  deploy  values(3,'王五','销售部',6000,'2012-10-15');
insert into  deploy  values(4,'王明','开发部',2500,'2015-10-28');
insert into  deploy  values(5,'王雨','开发部',2500,'2015-10-28');
insert into  deploy  values(6,'赵八','销售部',6000,'2010-11-28');
insert into  deploy  values(7,'赵八','设计部',3000,'2011-11-28');
insert into  deploy  values(8,'孙九','销售部',5000,'2017-11-28');

适用group by的'场景':出现函数如sum、max、avg、count,这种情况一般同时伴随着分组group by

 

④  having  筛选    

+++++++++++++++  "mysql中的where和having子句筛选的区别"  +++++++++++++++

1、having字句可以让我们筛选'成组后'的各种数据

2、where字句在'聚合前'先'筛选' row记录

备注: where'作用'在group by和having字句前,而 having子句在'聚合后'对'组记录'进行筛选

 

⑤    select 编排顺序

SELECT name, COUNT(*) as num_subscriptions
FROM customers
JOIN subscriptions ON customers.id = subscriptions.customer_id
WHERE name LIKE 'J%'
GROUP BY customers.id
HAVING num_subscriptions >= 2;

-- 该语句将按照名字以"J"开头的客户进行分组,并统计每个客户订阅的服务数量

-- 然后,它使用HAVING子句过滤掉订阅服务少于2个的客户
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值