MySQL语句的条件查询

文章目录

  • 1.什么是条件查询?
  • 2.条件查询中的条件
    • 2.1.= 等于
    • 2.2.!= 或<> 不等于
    • 2.3.< 小于
    • 2.4.<= 小于等于
    • 2.5.> 大于
    • 2.6.>= 大于等于
    • 2.7.between ... and ... 在两个值之间
    • 2.8.is null 为null(is not null 不为空)
    • 2.9.and 并且
    • 2.10.or 或者
    • 2.11.in 包含 (not in 不在这个范围中)
    • 2.12.like 模糊查询

1.什么是条件查询?

条件查询是众多查询语句里的一种方法,不是将表中所有的数据都查出来的,而是查询出符合条件的数据。

语法格式:

select 字段名 from 表名 where 查询条件;

2.条件查询中的条件

下面例子中所用到的emp表
MySQL语句的条件查询_第1张图片

2.1.= 等于

查询薪资等于800的员工
select * from emp where sal=800;

MySQL语句的条件查询_第2张图片

2.2.!= 或<> 不等于

查询薪资不等于800的员工
select * from emp where sal!=800;
select * from emp where sal<>800;

MySQL语句的条件查询_第3张图片

2.3.< 小于

查询薪资小于3000select * from emp where sal<3000;

MySQL语句的条件查询_第4张图片

2.4.<= 小于等于

查询薪资小于等于3000select * from emp where sal<=3000;

MySQL语句的条件查询_第5张图片

2.5.> 大于

查询薪资大于3000select * from emp where sal>3000;

MySQL语句的条件查询_第6张图片

2.6.>= 大于等于

查询薪资大于等于3000select * from emp where sal>=3000;

MySQL语句的条件查询_第7张图片

2.7.between … and … 在两个值之间

between…and…等同于>=and<=

查询薪资在15003000之间的
select * from emp where sal between 1500 and 3000;
select * from emp where sal>=1500 and sal<=3000;

MySQL语句的条件查询_第8张图片

2.8.is null 为null(is not null 不为空)

查询津贴为nullselect * from emp where comm is null ;
查询津贴不为nullselect * from emp where comm is not null ;

注意:在数据库中null不能使用等号来衡量,需要使用is null进行判断,null表示什么都没有、空,它不是一个值。

select * from emp where comm = null ;	查询结果为空

MySQL语句的条件查询_第9张图片

2.9.and 并且

查询薪资为3000且名字为FORD的员工
select * from emp where sal=3000 and ename='FORD';    
员工名字为字符串,需要使用单引号引起来

MySQL语句的条件查询_第10张图片

2.10.or 或者

查询薪资为800或者3000select * from emp where sal=800 or sal=3000;

MySQL语句的条件查询_第11张图片
and和or同时出现时的优先级问题:
查询工资大于2500,并且部门编号为10或20 的员工。

select * from emp where sal>2500 and deptno=10 or deptno=20;
如果我们按照上面的写法,所查询出来的数据如下图所示,明显不符合我们的要求

我们需要使用小括号将or语句括起来
select * from emp where sal>2500 and (deptno=10 or deptno=20);

MySQL语句的条件查询_第12张图片
MySQL语句的条件查询_第13张图片
上面的测试并不能看出and和or的优先级谁更高,我们需要进行一下的查询测试。

我们来查询工资为3000且名字叫作SCOTT的人和工资为1250且名字叫作WARD的人,我们分别使用小括号和不使用小括号进行查询。
select ename,sal from emp where (sal=3000 and ename='SCOTT') or (sal=1250 and ename='WARD');
select ename,sal from emp where sal=3000 and ename='SCOTT' or sal=1250 and ename='WARD';

MySQL语句的条件查询_第14张图片
MySQL语句的条件查询_第15张图片
经过上面的测试,我们就可以得出,and 的优先级是要高于or的

2.11.in 包含 (not in 不在这个范围中)

in相当于多个or

查询薪资为(800,1500,3000)这些的员工的名字
select ename as 员工姓名 from emp where sal=800 or sal=1500 or sal=3000;
select ename as 员工姓名 from emp where sal in (800,1500,3000);
查询薪资不为(800,1500,3000)这些的员工的名字
select ename as 员工姓名 from emp where sal not in (800,1500,3000);

in 并不是一个区间,in后面跟的是具体的值,更类似于一个集合。

MySQL语句的条件查询_第16张图片
MySQL语句的条件查询_第17张图片

2.12.like 模糊查询

like 模糊查询,支持 % 百分号,_ 下划线匹配,"%“表示任意的多个字符,”_ "表示任意的一个字符

查询名字中含有'S'的员工
select ename from emp where ename like '%' 'S' '%';
查询名字是以'T'结尾的
select ename from emp where ename like '%T';
查询名字以'S'开始的
查询第二个字母是'A'select ename from emp where ename like '_A%';
查询第三个字母是'R'select ename from emp where ename like '__R%' ;

MySQL语句的条件查询_第18张图片
MySQL语句的条件查询_第19张图片
MySQL语句的条件查询_第20张图片
MySQL语句的条件查询_第21张图片
MySQL语句的条件查询_第22张图片

如果名字中含有下划线,而我们又想要查找出名字中含有下划线的

select name from table_name where name like '%_%';
这样查找会查出所有的姓名,因为'_'具有特殊含义,们需要w对其进行转义,加一个斜杠'\'
select name from table_name where name like '%\_%';
这样就可以找出名字中带有下划线的数据了

你可能感兴趣的:(sql,sql,数据库,java)