MySQL听课笔记(3)(条件查询)

条件查询

  • 语法:
select 
	查询列表
from 
	表名
where
	筛选条件;
  • 分类:
  1. 按条件表达式筛选:条件运算符:> < = != >= <=
  2. 按逻辑表达式筛选:逻辑运算符:&& || ! 或者:and or not
  3. 模糊查询:like, between and, in, is null.

首先看看按条件表达式查询:

# 查询工资大于12000的员工:
select * from employees where salary > 12000;
# 部门编号不等于90的员工名和部门编号
select department_ID, sname from employees where department_ID != 90;

按逻辑表达式筛选:

# 查看工资在10000到20000之间的员工名和工资
select sname, salary from employees where 
salary >=10000 and salary <= 20000;
# 查看部门编号不是在90到110之间并且工资高于20000的员工信息
select * from employees where department_ID<90 or department_ID>110 
or salary > 20000;

模糊查询

like:

 # 查询员工名中包含字符'a’的员工信息
 # 这里注意,MySQL中不区分大小写,所以名字中如果有大写的A也是包含进去的
 select * from temp where sname like '%a%'; /* 字符型一定只能是单引号,
 因为字符a的前后可能还有其他的字符,所以这里要在a的前后加上%,表示通配符*/
 

总结一下like的特点:

  • 一般和通配符配合使用
    常见通配符?
    % :任意多个字符,包含0个
    _ :下划线,任意的单个字符
# 查询员工姓名中第三个字符是'a’第五个是'e'的员工信息:
select * from employees where name like '__a_e%';
# 查询员工姓名中第二个字符是_的员工信息:
select * from employees where name like '_\_%';# 在这种like关键字模糊查询中可以使用转义字符\...
# 如果不想使用\也可以使用escape语句
select * from employees where name like '_$_%' escape '$';

between and:(简化and)

select * from employees where
salary between 120 and 200;

特点:

  1. 可以简化代码。
  2. 包含两个临界值(闭区间)。
  3. 不可以将两个临界值互换。

in(简化or):

# 查询员工工种编号是AD_UI, AD_YU中的一个的员工的姓名和工号
select sname, job_id from employees where 
job_id='AD_UI' or job_id='AD_YU';
# 使用in:
select sname, job_id from employees where
job_id in ('AD_UI', 'AD_YU');
# 特殊情况:如果将最后一句改成job_id in ('AD%');是否可行?
select sname, job_id from employees where
job_id in ('AD%');# 这是不可行的,因为通配符只能在like语句中使用

is null:

注意事项:
不可以使用“=”来判断值是否为空:
is 和null应该是连在一起用的,不能判断其他的如:is 200

select * from employees where
salary = null;  # 这是错误的表示方式
select * from employees where
salary is null;  # 这是正确的表示方式
select * from employees where 
salary is 2000;  # 会报错
select * from employees where
salary is not null;  # 判断不是空

安全等于 <=>

安全等于可以判断null也可以用来判断常量值
可读性不高,一眼看去无法判断是等于还是不等于

select * from employees where
salary <=> null;  # 判断为空
select * from employees where 
salary <=> 12000;  # 判断常数值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值