Mysql查询---条件查询

本文详细介绍了MySQL中的条件查询,包括等号、不等号、区间、OR、IN、IS NULL、LIKE操作。还讲解了排序查询的ORDER BY关键字,以及聚合函数如MAX、MIN、COUNT、SUM和AVG的使用。此外,还涵盖了去重复DISTINCT、分组GROUP BY及HAVING、LIMIT分页和子查询的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条件查询

支持的运算符:
运算符	说明
=	等于
<>或者!=	不等于
<	小于
<=	小于等于
>	大于
>=	大于等于
between...and	两个值之间
is null	为null(is not null 不为null)
and	并且
or	或者
in	包含(not in 不包含范围中)
not	not否的意思,主要和is 或者in一起使用
like like称为模糊查询,支持%或者下划线 _
       %匹配任意字符
        _一个下划线只匹配一个字符

1、等号查询(=)
查询薪水为5000的员工
SELECT * FROM emp WHERE sal = 5000;
查询职位为 MANAGER 的员工的信息
SELECT * FROM emp WHERE job = ‘MANAGER’;
2、不等号的查询(<>或者!=)
查询薪水不等于5000的员工的信息
SELECT * FROM emp WHERE sal != 5000;
查询职位不是MANAGER 的员工的信息
SELECT * FROM emp WHERE job <> ‘MANAGER’;
3、区间条件的查询(<,<=,>,>= ,between…and)
薪水大于1600的员工信息
SELECT * FROM emp WHERE sal > 1600;
#薪水在1600和3000之间的员工信息
SELECT * FROM emp WHERE sal > 1600 AND sal < 3000;
SELECT * FROM emp WHERE sal BETWEEN 1600 AND 3000;

注意:between and 包含头尾信息
4、或者(or)
查询部门编号为20或者30的部门信息
SELECT * FROM dept WHERE (deptno = 20 OR deptno = 30) ;
5、包含,不包含的查询(in,not in )
查询部门编号为20或者30的信息
SELECT * FROM dept WHERE deptno IN(20,30);
查询部门编号不为20也不为30的信息
SELECT * FROM dept WHERE deptno NOT IN(20,30);

6、关于空的查询操作(is null ,is not null)
查询没有补助的员工的信息
SELECT * FROM emp WHERE comm IS NULL;
查有补助的员工的信息
SELECT * FROM emp WHERE comm IS NOT NULL;
7、模糊查询(like ,%_)
关键字 like 这个关键字的时候注意 需要和%(匹配符号)结合使用
_ 占位符视情况使用。

要求第一个字母带有s的员工的信息
SELECT * FROM emp WHERE ename LIKE ‘s%’;

要求第二个字母带有m的员工的信息
SELECT * FROM emp WHERE ename LIKE ‘_m%’;

代码常用方式:
SELECT * FROM emp WHERE ename LIKE ‘%m%’;

排序查询

order by 不算是条件,所以直接使用的时候不用where
关键字:order by [ asc 升序 | desc 降序 ]

根据员工的薪水排序(升序)
SELECT * FROM emp ORDER BY sal ASC;
根据员工的薪水排序(降序)
SELECT * FROM emp ORDER BY ename DESC;
员工入职日期降序查询
SELECT * FROM emp ORDER BY hiredate DESC;

查询职位为MANAGER 的员工信息,并且按照薪资从高到低排序
SELECT * FROM emp WHERE job = ‘MANAGER’ ORDER BY sal DESC;

聚合函数

SQL中存在一些聚合函数,这些特殊函数是不能直接在where后面当做条件使用的,一般使用方式为 放在返回值项(*) 或者放在having关键字后

max 求最大值 min 最小值 count 总数 sum 总和 avg 平均值

去重复distinct

#去重复(忽略人的情况下,查询公司一共有几个部门)
SELECT DISTINCT deptno FROM emp

分组查询 group by & having

关键字:group by having

找出不同工作类别中的最高薪资
SELECT job,MAX(sal) FROM emp GROUP BY job
找出不同工作类别中的最高薪资,显示的时候要求按照薪资从高到低显示
SELECT job,MAX(sal) AS t FROM emp GROUP BY job ORDER BY t DESC;

求每个部门的平均薪资
SELECT deptno,AVG(sal) AS t FROM emp GROUP BY deptno

求每个岗位的最高薪资 ,除MANAGER之外
SELECT job,MAX(sal) FROM emp WHERE job <> ‘MANAGER’ GROUP BY job

找出每个工作岗位的平均薪水 ,要求显示平均薪水大于2000的 (having)
当出现根据分组后得到的数据进行帅选的时候,一定要借助having关键字,并且放在分组之后。
SELECT AVG(sal) AS t FROM emp GROUP BY job HAVING t > 2000;

Limit关键字

limit :极限
MySQL中limit 的有二
第一、可以通过这个关键字查询固定几条数据(前3条)
第二、可以使用这个limit实现分页。

使用方法
limit 参数可以有一个,意思是取几条数据

limit 参数可以有两个 (limit index,count)
第一个:索引的起始位置
第二个:返回条数

案例: 员工每页5条数数据,分页

子查询

子查询:一条SQL的返回值当做另一条SQL的条件。 也叫嵌套查询。

找出薪水比公司平均薪水高的员工,要求显示员工的名字和薪水

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值