MySQL学习笔记之条件查询和模糊查询like、between and、in、is null 、is not null...

注意:

SQL语法中 - - 为单行注释标记

MySQL语法中 # 为单行注释标记

1.条件查询以及筛选条件

--格式
	select 
		查询列表
	from
		表名
	where
		筛选条件;
--筛选条件分类:
	1.条件表达式
	>  <  =(等于)  !=(不等于)  <>(不等于)  >=  <=
	其中,=运算符不可以用于判断null
	2.逻辑表达式
	作用:一般是用来连接条件表达式
	&&  ||and  or  not
	3.模糊表达式
	like	注意:like常与通配符一起使用
	between	and
	in
	is null
	4.通配符:%表示任意数量个任意字符 ,_表示单个任意字符
	转义字符:\ 为mysql默认的转移字符,ESCAPE 用于指定转义字符

练习1

①案例1 查询工资大于9000的员工信息

SELECT	
	*
FROM
	employees
WHERE
	salary > 9000;

②案例2 查询部门编号不为90的员工姓名及部门编号

SELECT	
	CONCAT(last_name,'_',first_name), --将姓和名用下划线 ‘_’连接
	department_id
FROM 
	employees
WHERE
	department_id != 90;

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

SELECT 
	CONCAT(last_name,'_',first_name),
	salary,
	IFNULL(commission_pct,0)  --IFNULL(expr1,expr2)含义为如果expr1为null则输出expr2
FROM
	employees
WHERE
	salary >= 10000 && salary <= 20000;

④案例4 查询部门编号不在90到110之间,或工资高于15000的员工信息

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

2.模糊查询

like也可以使用 not like

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

SELECT 
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';

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

SELECT
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';

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

SELECT 
	last_name
FROM
	employees
WHERE	
	--last_name like '_\_%';		 --\ 为mysql默认的转移字符
	last_name LIKE '_$_%' ESCAPE '$';--ESCAPE 用于指定转义字符
between and

注意:
①闭区间
②两个临界值顺序不能颠倒
③两个临界值类型要相同

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

SELECT	
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;
in

注意:
①不支持通配符
in列表中的选项应该是同一类型或者可以隐式转换

案例1 查询工作编号是AC_MGR、AD_VP、HR_REP中一个的员工名字和工作编号、薪水

SELECT
	last_name,
	job_id,
	salary
FROM
	employees
WHERE
	job_id IN ('AC_MGR','AD_VP','HR_REP');--需要加'',否则会被认为是列名(字段)
is nullis 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;
⑤安全等于符号 <=>is null的比较

is null : 只可以用于比较null,可读性较高,建议使用
<=> : 既可以比较null也可以比较数值

案例1 查询没有奖金的员工

SELECT
	*
FROM
	employees
WHERE
	commission_pct <=> NULL;

案例2 查询工资为12000的员工

SELECT 
	*
FROM
	employees
WHERE
	salary <=> 12000;

案例3 查询工号为176的员工的姓名和部门号以及年薪

SELECT
	last_name,
	department_id,
	salary*12*(1+IFNULL(commission_pct,0))
FROM
	employees
WHERE
	employee_id = 176;
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咖啡与乌龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值