mysql的进阶学习--基础篇--SQL的DQL

本文详细介绍了SQL查询的基础语法,包括DQL的基本操作如选择字段、条件查询、分组、排序和聚合函数的使用。强调了在实际开发中避免使用通配符'*'以提高代码可读性和效率,并提供了多个查询示例,如通过年龄、身份证号进行条件过滤,以及利用聚合函数进行分组统计等。此外,还提到了分页查询的重要性和执行顺序,帮助理解SQL查询的构建和执行流程。
摘要由CSDN通过智能技术生成

事实上查询的频次要远远高于增删改的频次.

语法基础

DQL语法

select 		字段列表 
from 			表名列表
where 			条件列表
group by 		分组字段列表
having 		分组后条件列表
order by 		排序字段列表
limit 			分页参数

基础查询

查指定字段

select 字段列表 from 表名;

查所有字段

select * from 表名;
实际开发中尽量不要写*
为什么?
一个是不直观, 一个是影响效率

给字段起别名

select workaddr as 别名 from 表名;
as是可以省略的

去重

select distinct 字段 from emp;

条件查询

条件运算符:

>
>=
<
<=
=
<>/!=
between .. and ..
in(...)
like 占位符 : (_下划线匹配单个字符,%百分号匹配任意字符)
is null

逻辑运算符

and 或者 &&
or 或者 ||
not 或者 !

查询例子

查询年龄等于88的员工:
select * from emp where age = 88;
查询年龄小于22的员工:
select * from emp where age < 22;
查询没有身份证号的员工信息:
select * from emp where idnum is null;
查询有身份证号的员工信息:
select * from emp where idnum not is null;
查询年龄不等于88的员工:
select * from emp where age != 88;
select * from emp where age <> 88;
查询年龄在15岁(包含)到20岁(包含)之间的员工:
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;
查询年龄等于20或者40或者80的员工:
select * from emp where age = 20 or age =40 or age = 80;
select * from emp where age in (18,20,40);
查询名字只有两个字的员工:
select * from emp where name like '__';
查询身份证号最后一位是X的员工:
select * from emp where idnum like '%X';

聚合函数查询

什么是聚合函数

将一列数据作为一个整体, 进行纵向的计算;

常见的聚合函数

count: 统计纵向的记录数(也叫做统计元组群数), 不用指定字段.
max: 找到纵向的记录中最大的一个或者好多个元组, 用指定字段.
min: 找到纵向的记录中最小的一个或者好多个元组, 用指定字段.
avg: 计算元组群中某个字段数据的平均数, 要指定字段.
sum: 计算元组群中某个字段数据的总和, 要指定字段.

注意点

null值不参与所有的聚合函数运算.

分组查询

基本语法

select 字段列表 from 表名 
[where 条件] 
Group by 分组字段名 [having 分组之后过滤条件] ; 

where和having的不同

执行时机不同: where是分组之前进行过滤, 不满足where的条件不参与分组, 而having是分组之后对结果进行过滤.

where并不能对聚合函数进行判断, 但是having可以.

查询例子

根据性别分组, 统计男员工和女员工的数量.
select gender, count() from emp group by gender;
根据性别分组, 统计男员工和女员工的平均年龄:
select gender, avg(age) from emp group by gender;
查询年龄小于45的员工, 并根据工作地址分组, 获取员工数量大于等于3的员工地址:
select addr, count(
) from emp where age < 45 group by addr having count(*) >= 3;

注意点

一般使用分组查询使用其他字段是没有任何意义的, 只会出来第一个, 所以一般都是查询分组的字段和聚合函数.

排序查询

实际开发中是十分常见的

基本语法

select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2 ;
排序方式只有两种:
升序: (默认)ASC
降序: desc

注意点

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

分页查询

基本语法

select 字段列表 from 表名 limit 起始索引, 查询记录数 ;

注意点

起始索引是从0开始的, 它的计算规则是= (查询页码-1) * 每页的显示条数.
分页查询是数据库的方言, 不同的数据库有不同的语法, mysql中就是limit.
如果查询的是第一页, 起始索引可以省略.

执行顺序

注意注意
最上边的语法基础讲的是编写顺序
而真正的执行顺序是这样的
在这里插入图片描述
最先的是将表确定, 再将where条件确定, 最后再补充上having条件
此时, 再来确定查询的字段列表
最后将字段列表进行排序
最最后, 看是否需要分页操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值