MySQL-条件查询

本文介绍了SQL中的条件查询,包括按条件表达式(如>,<,>=,<=,<>)筛选,使用逻辑表达式(AND,OR,NOT)组合条件,以及模糊查询(LIKE,BETWEEN,IN,ISNULL)等操作。通过实例展示了如何筛选数据,例如查询特定范围内的工资、特定部门的员工,以及包含特定字符的员工姓名等。
摘要由CSDN通过智能技术生成

1 简介

语法特点:

  • select 某内容 from 某表 where 某条件

2 按条件表达式筛选

简单条件运算符

  • 大于号:>
  • 小于号:<
  • 大于等于号:>=
  • 小于等于号:<=
  • 不等于号:<>
  • 不等于号:<>

案例1:查询工资>12000的员工信息

SELECT 
	*
FROM
	employees
WHERE
	salary>12000;

案例2:查询部门编号不等于90号的员工名和部门编号

SELECT 
	last_name,
	department_id
FROM
	employees
WHERE
	department_id<>90;

3 按逻辑表达式筛选

逻辑表达式关键字:

  • &&
  • ||
  • !
  • and
  • or
  • not

&&和and:两个条件都为true,结果为true,反之为false
||或or: 只要有一个条件为true,结果为true,反之为false
!或not: 如果连接的条件本身为false,结果为true,反之为false

案例1:查询工资z在10000到20000之间的员工名、工资以及奖金

SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=10000 AND salary<=20000;

案例2:查询工资z在10000到20000之间的员工名、工资以及奖金

SELECT
	*
FROM
	employees
WHERE
	NOT(department_id>=90 AND  department_id<=110) OR salary>15000;

4 模糊查询

模糊查询关键字:

  • like
  • between and
  • in
  • is null

4.1 like

特点:

  • 一般和通配符搭配通配符使用
    • % : 任意多个字符,包含0个字符
    • _ : 任意单个字符

案例1:查询员工名中包含字符a的员工信息

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

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

select
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__e_a%';

案例3:查询员工名中第二个字符为_的员工名

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';

4.2 between and

特点:

  1. 使用between and 可以提高语句的简洁度
  2. 包含临界值
  3. 两个临界值不要调换顺序

案例1:查询员工编号在100到120之间的员工信息

SELECT
	*
FROM
	employees
WHERE
	employee_id >= 100 AND employee_id <= 120;
#或者---------------------------------------------------------------
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

4.3 in

含义: 判断某字段的值是否属于in列表中的某一项

特点:

  1. 使用in提高语句简洁度
  2. in列表的值类型必须一致或兼容
  3. in列表中不支持通配符

案例1:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';
#或者---------------------------------------------------------------
SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

4.4 is null / is not null

注意事项:

  1. =或<>不能用于判断null值
  2. is null或is not null 可以判断null值

案例1:查询没有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

案例2:查询有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

4.5 <=>安全等于

注意事项:

  1. =或<>不能用于判断null值
  2. is null或is not null 可以判断null值

案例1:查询没有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=>NULL;

案例2:查询工资为12000的员工信息

SELECT
	last_name,
	salary
FROM
	employees
WHERE 
	salary <=> 12000;

下列写法是错误的,不要这么干!!!

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE 
	salary IS 12000;

4.6 is null 与 <=>比较

is null:仅仅可以判断NULL值,可读性较高,建议使用

<=>:既可以判断NULL值,又可以判断普通的数值,可读性较低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cycyong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值