首页 专题 文章 代码 归档
Mysql 条件查询
2020.02.27 20:29 2020.02.27 20:29

1. 条件查询

基础查询的基础上添加where子句;

语法:

select 字段
from 表名
where 条件;

2. 2.表达式

2.1. 条件表达式

有:>=<>=<=<>

2.2. 逻辑表达式

有:&&||!

2.3. 模糊查询

likebetween andinis null

3. 按条件筛选

查询工资大于10000:

select *
from employees
where salary > 10000
;

查询部门编号不等于90:

select *
from employees
where department_id != 90;

4. 按逻辑表达式筛选

作用:用于连接条件表达式;

&&and:如果两个都为true,则为true

||or:一个为true,则结果为true

|:取反,真为false,假则为true


1、查询工资在10000到20000之间的人

select *
from employees
where salary >= 10000
  and salary <= 20000;

2、查询部门编号不是在90到110之间,或者工资高于15000的员工:

select *
from employees
where department_id >= 90 and department_id <= 110
   or salary > 15000
;

5. 模糊查询

1、查询员工名称包含a的员工:

使用like关键字;

select *
from employees
where first_name like '%a%';

注:%代表任意个可能的字符(0-n)

与此相反的是_,仅代表一个字符,那么写两个则是代表两个任意字符:

select *
from employees
where first_name like '_a%';

上面这个就是查询名称中第二个字母是a的员工;

另,当查询条件本身为_时,可使用转义:\_


2、当比较字段相同时,可考虑between and

select *
from employees
where department_id between 90 and 110
   or salary > 15000
;

注: 1、between 90 and 110是闭区间,即:90<=id<=110

2、between 90 and 110中90与110的临界值,不能颠倒;


3、in关键字

如:查询工种编号(job_id)是:AD_PRES,AD_VP,IT_PROG的员工名;

select *
from employees
where job_id in ('AD_PRES','AD_VP','IT_PROG');

注:

1、in列表的值应该统一或兼容(可以转换)


4、is null

如:查询没有奖金的员工名和奖金率

select last_name, commission_pct
from employees
where commission_pct is null;

注:此处就不能写成:commission_pct = null

如果有奖金的呢?

select last_name, commission_pct
from employees
where commission_pct is not null;

安全等于

如下:换成<=>

select last_name, commission_pct
from employees
where commission_pct <=> null;
本节阅读完毕! (分享
二维码图片 扫描关注我们哟