03、DQL(数据查询语句)

目录

1、编写顺序

2、基本查询

3、条件查询

4、聚合函数

5、分组查询

6、排序查询

7、分页查询

8、执行顺序


1、编写顺序

SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数

2、基本查询

查询多个字段

SELECT 字段1,字段2,字段3... FROM 表名

SELECT name,age,gender from emp

查询所有字段

SELECT * FROM 表名

SELECT * FROM emp

设置别名
SELECT 字段1 [AS 别名1],字段2[AS 别名2] ...FROM 表名

SELECT name AS '姓名' from emp

去除重复记录
SELECT DISTINCT 字段列表 FROM 表名

SELECT DISTINCT name FROM emp

3、条件查询

查询age等于5的数据

SELECT * FROM emp WHERE age = 5

查询age小于5的数据

SELECT * FROM emp WHERE age < 5

查询age大于等于5的数据

SELECT * FROM emp WHERE age >= 5

查询age不等于5的数据

SELECT * FROM emp WHERE age <> 5
-- 或者
SELECT * FROM emp WHERE age != 5

查询age为空的数据

SELECT * FROM emp WHERE age IS NULL

查询age不为空的数据

SELECT * FROM emp WHERE age IS NOT NULL

查询age在3(包含) 到7(包含)之间的数据

SELECT * FROM emp WHERE age >= 3 && age <= 7
-- 或者
SELECT * FROM emp WHERE age >= 3 AND age <= 7
-- 或者
SELECT * FROM emp WHERE age BETWEEN 3 AND 7

查询name为3且age小于5的数据

SELECT * FROM emp WHERE name = 3 && age < 5

查询age等于3或5或7的数据

SELECT * FROM emp WHERE age = 3 OR age = 5 OR age = 7
-- 或者
SELECT * FROM emp WHERE age in(3,5,7)

查询detail为2个字的数据

SELECT * FROM emp WHERE detailLIKE '__'

查询detail最后以为是1的数据

SELECT * FROM emp WHERE detail LIKE '%1'

4、聚合函数

注意:所有的null值不参与聚合函数的运算

统计数据的数量

SELECT COUNT(*) from emp

统计age的平均值

SELECT AVG(age) from emp

获取age的最小值

SELECT MIN(age) from emp

获取age的最大值

SELECT MAX(age) from emp

5、分组查询

 查询语句:

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]

WHERE和HAVING区别

  1. 执行时机不同:WHERE是分组之前进行顾虑 不满足WHERE条件 不参与分组;而HAVING是分组之后对结果进行过滤
  2. 判断条件不同:WHERE不能对聚合函数进行判断,二HAVING可以

根据性别分组 统计男性员工和女性员工的数量

SELECT gender, COUNT(*) from emp GROUP BY gender

根据性别分组 统计男性员工和女性员工的平均年龄

SELECT gender,AVG(age) from emp GROUP BY gender

查询年龄大于5的员工 并根据detail进行分组 获取员工数量大于等于2的detail

SELECT test '地址',COUNT(*) '数量' from emp WHERE age > 5 GROUP BY detail HAVING COUNT(*) >= 2

6、排序查询

查询语句 :

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

排序方式:

  1. ASC:升序(默认值)
  2. DESC:降序

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

根据age对数据进行升序排序

SELECT age from emp ORDER BY age ASC

根据age对数据进行升序排序 如果age相同 再按照idcard进行降序排序

SELECT * from emp ORDER BY age ASC,idcard DESC

7、分页查询

查询语句:

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

注意:

  1. 起始索引从0开始 起始索引=(查询页码-1)*每页显示记录数
  2. 分页查询是数据库中的方言 不同的数据库有不同的实现 mysql中是LIMIT
  3. 如果查询的是第一页的数据 起始索引可以省略 直接简写为limit 3

查询第1页的数据 每页展示3条记录

SELECT * from emp LIMIT 0,3

查询第2页的数据 每页展示3条记录

SELECT * from emp LIMIT 3,3

8、执行顺序

 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 SELECT 字段列表 ORDER BY 排序字段列表 LIMIT 分页参数

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bbamx.

谢谢您

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

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

打赏作者

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

抵扣说明:

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

余额充值