04-条件查询

04-条件查询

课程目标

掌握条件查询中的运算符。

4.1条件查询中的运算符

条件查询需要用到where语句,where必须放到from语句表的后面支持如下运算符,如下表4-1所示:

表4-1

运算符

说明

=

等于

<>或!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

between … and ….

两个值之间,等同于 >= and <=

is null

为null(is not null 不为空)

and

并且

or

或者

in

包含,相当于多个or(not in不在这几个值当中)

not

not可以取非,主要用在is 或in中

like

like称为模糊查询,支持%或下划线匹配

%匹配任意个字符

下划线,一个下划线只匹配一个字符

注意转义'\_'代表一个普通的下划线字符

4.2 等号操作符

1.查询薪水为5000的员工,如下图4-1所示:

select empno, ename, sal from emp where sal=5000;

图4-1

2.查询job为MANAGER的员工,如下图4-2所示:

select empno, ename from emp where job=manager;

图4-2

以上查询出现错误,因为job为字符串,所以出现了以上错误,如下图4-3所示:

select empno, ename from emp where job="manager";

图4-3

也可以使用单引号,如下图4-4所示:

select empno, ename from emp where job=' manager ';

图4-4

以上输出正确,MySQL默认情况下大小写是不敏感的。

注意:

MySQL在Windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写,结果再 想要将数据库导出放到linux服务器中使用时就出错了。因为在linux下表名区分大小写而找不到表,查了很多都是说在linux下更改MySQL的设置使其也不区分大小写,但是有没有办法反过来让windows 下大小写敏感呢。其实方法是一样的,相应的更改windows中MySQL的设置就行了。

具体操作:

   在MySQL的配置文件my.ini中增加一行:

   lower_case_table_names = 0

   其中 0:区分大小写,1:不区分大小写

   MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

  1、数据库名与表名是严格区分大小写的;

  2、表的别名是严格区分大小写的;

  3、列名与列的别名在所有的情况下均是忽略大小写的;

  4、变量名也是严格区分大小写的;   

MySQL在Windows下都不区分大小写

4.3 <>操作符

1.查询薪水不等于5000的员工,如下图4-5所示:

select empno, ename, sal from emp where sal <> 5000;

图4-5

以下写法等同于以上写法,建议使用第一种写法

select empno, ename, sal from emp where sal != 5000;

数值也可以采用单引号引起来,如一下语句是正确的(不建议这么写):

select empno, ename, sal from emp where sal <> '5000';

2.查询工作岗位不等于MANAGER的员工

select empno, ename from emp where job <> 'MANAGER';

4.4 between … and …操作符

1.查询薪水为1600到3000的员工(第一种方式,采用>=和<=),如下图4-6所示:

select empno, ename, sal from emp where sal >= 1600 and sal <= 3000;

图4-6

2.查询薪水为1600到3000的员工(第二种方式,采用between … and …) ,如下图4-7所示:

select empno, ename, sal from emp where sal between 1600 and 3000;

图4-7

关于between … and …,它是包含最小值和最大值的

4.5 is null

null为空,但不是空串,为null可以设置这个字段不填值,如果查询为null的字段,采用is null

1.查询津贴为空的员工,如下图4-7所示:

select * from emp where comm=null;

图4-7

以上也无法查询出符合条件的数据,因为null类型比较特殊,必须使用 is来比较,如下图4-8所示:

select * from emp where comm is null;

图4-8

以上查询正确

4.6 and

and表示并且的含义,表示所有的条件必须满足

1.工作岗位为MANAGER,薪水大于2500的员工,如下图4-9所示:

select * from emp where job='MANAGER' and sal > 2500;

图4-9

4.7 or

or,只要满足条件即可,相当于包含

1.查询出job为manager或者job为salesman的员工,如下图4-10所示:

' select * from emp where job='MANAGER' or job='SALESMAN;

图4-10

4.8 表达式的优先级

1.查询薪水大于1800,并且部门代码为20或30的员工(错误的写法),如下图4-11所示:

select * from emp where sal > 1800 and deptno = 20 or deptno = 30;

图4-11

以上输出不是预期结果,薪水小于1800的数据也被查询上来了,原因是表达式的优先级导致的,首先过滤sal > 1800 and deptno = 20,然后再将deptno = 30员工合并过来,所以是不对的

2.查询薪水大于1800,并且部门代码为20或30的(正确的写法),如下图4-12所示:

select * from emp where sal > 1800 and (deptno = 20 or deptno = 30);

图4-12

关于运算符的问题:不用记,没有把握尽量采用括号

4.9 in

in表示包含的意思,完全可以采用or来表示,采用in会更简洁一些

1.查询出job为manager或者job为salesman的员工,如下图4-13所示:

select * from emp where job in ('manager','salesman');

图4-13

2.查询出薪水包含1600和薪水包含3000的员工,如下图4-14所示:

select * from emp where sal in (1600, 3000);

图4-14

4.10 not

1.查询出薪水不包含1600和薪水不包含3000的员工(第一种写法),如下图4-15所示:

select * from emp where sal <> 1600 and sal <> 3000;

图4-15

2.查询出薪水不包含1600和薪水不包含3000的员工(第二种写法),如下图4-16所示:

select * from emp where not (sal = 1600 or sal = 3000);

图4-16

3.查询出薪水不包含1600和薪水不包含3000的员工(第三种写法),如下图4-17所示:

select * from emp where sal not in (1600, 3000);

图4-17

4.查询出津贴不为null的所有员工,如下图4-18所示:

select * from emp where comm is not null;

图4-18

4.11 like

like可以实现模糊查询,like支持%和下划线匹配

1.查询姓名以M开头所有的员工,如下图4-19所示:

select * from emp where ename like 'M%';

图4-19

2.查询姓名以N结尾的所有的员工,如下图4-20所示:

select * from emp where ename like '%N';

图4-20

3.查询姓名中包含o的所有的员工,如下图4-21所示:

select * from emp where ename like '%o%';

图4-21

4.查询姓名中第二个字符为A的所有员工,如下图4-22所示:

select * from emp where ename like '_A%';

图4-22

like中%和下划线的差别?

%匹配任意字符出现的个数

下划线只匹配一个字符

like 中的表达式必须放到单引号中 | 双引号中,以下写法是错误的:

select * from emp where ename like _A%

4.12 本章小结

本章主要阐述了SQL语句中的条件查询。

posted @   ღ᭄遇见你²⁰²²  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示