DAY7 MySQL学习笔记

DAY7 MySQL学习笔记

DQL-排序查询ORDER BY

1.语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

2.排序方式

ASC:升序(默认值),即不写就是默认升序排序

DESC:降序

[!IMPORTANT]

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

/*
1.根据年龄对公司的员工进行升序排序
2.根据入职时间,对员工进行降序排序
3.根据年龄对公司员工进行升序排序,年龄相同,再按照入职时间进行降序排序
*/

--1.根据年龄对公司的员工进行升序排序
SELECT * FROM emp ORDER BY age ASC;
--2.根据入职时间,对员工进行降序排序
SELECT * FROM emp ORDER BY enterydate DESC;
--3.根据年龄对公司员工进行升序排序,年龄相同,再按照入职时间进行降序排序
SELECT * FROM emp ORDER BY age ASC,enterydate DESC;
DQL-分页查询LIMIT

1.语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

[!IMPORTANT]

起始索引从0开始,起始索引=(查询页码-1)*每页显示的记录数

分页查询时数据库的方言,不同的数据库有不同的实现,MySQL用的是LIMIT

如果查询的是第一页数据,起始索引是0可以省略,直接简写成limit10

/*
1.查询第1页员工数据,每页显示10条记录
2.查询第2页员工数据,每页显示10条记录
*/

--1.查询第1页员工数据,每页显示10条记录
SELECT * FROM emp LIMIT 0,10SELECT * FROM emp LIMIT 10--这样也行
--2.查询第2页员工数据,每页显示10条记录
SELECT * FROM emp LIMIT 10,10--起始索引=(查询页码-1)*每页显示的记录数
DQL-案例

1.查询年龄为20,21,22,23岁的员工信息

2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工

3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数

4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职日期降序排序

5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按照年龄升序排序,年龄相同按入职日期升序排序

自己写

--1.查询年龄为20,21,22,23岁的女性员工信息
SELECT * FROM emp WHERE gender = '女' && age >= 20 && age <= 23;
--2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工
SELECT * FROM emp WHERE gender = '男' && age >= 20 && age <= 40 LIKE '___';
--3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
SELECT * FROM emp WHERE age <= 60 LINK gender;
--4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职日期降序排序
SELECT name,age FROM emp WHERE age <= 35 LIMIT age ASC,enterydate DESC;
--5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按照年龄升序排序,年龄相同按入职日期升序排序
SELECT * FROM emp WHERE gender = '男' && age >= 20 && age <= 40 LIKE id <=5 LIMIT age ASC,enterydate ASC;

答案

--1.查询年龄为20,21,22,23岁的女性员工信息
SELECT * FROM emp WHERE gender = '女' AND age in(20,21,2223);
--2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工
SELECT * FROM emp WHERE gender = '男' AND ( age BETWEEN 20 AND 40 ) AND LIKE '___'; --小括号只是为了让程序看起来更清晰,执行起来和没有没差别
--3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
SELECT gender, COUNT(*) FROM emp WHERE age < 60 GROUP BY gender;
--4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职日期降序排序
SELECT name, age FROM emp WHERE age <= 35 ORDER BY age ASC,enterydate DESC;
--5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按照年龄升序排序,年龄相同按入职日期升序排序
SELECT * FROM emp WHERE gender = '男' AND age BETWEEN 20 AND 40 ORDER BY age ASC,enterydate ASC LIMIT 5 ;
DQL-执行顺序
SELECT
	字段列表            --4
FROM
	表名列表            --1
WHERE
	条件列表            --2
GROUP BY
	分组字段列表        --3
HAVING
	分组后条件列表
ORDER BY
	排序字段列表        --5
LIMIT
	分页参数           --6

则执行顺序是

FROM
	表名列表            --1
WHERE
	条件列表            --2
GROUP BY
	分组字段列表        --3
HAVING
	分组后条件列表      --3
SELECT
	字段列表            --4
ORDER BY
	排序字段列表        --5
LIMIT
	分页参数           --6

案例

--查询年龄大于15的员工的姓名、年龄,并根据年龄进行升序排序
SELECT name, age FROM emp WHERE age > 15 ORDER BY age ASC;
关于DQL总结
SELECT
	字段列表            --4,别名AS
FROM
	表名列表            --1
WHERE
	条件列表            --2,逻辑运算符,比较运算符,分组前的条件列表
GROUP BY
	分组字段列表        --3
HAVING
	分组后条件列表
ORDER BY
	排序字段列表        --5
LIMIT
	分页参数           --6,起始页从0开始

日记:排序和分页的DQL查询还是有点问题,脑子没记住,还是要看下,案例变复杂会写不出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值