MySQL学习-运算符(十)

170 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

前言

上篇我们学习了一部分位运算符,有兴趣的小伙伴可以阅读(# MySQL学习-运算符(九))。
下面继续学习MySQL中的运算符。今天继续学习位运算符。

位运算符

按位左移运算符

运算符示例一

SELECT 4 << 1
FROM DUAL
4 << 1
8

表达式4按位左移,先转换成二进制00000100,按位左移一位,左边多出来的一位丢弃,右边不足的补0。变成00001000,换算成10进制是8。相当于乘以2,4左移一位,4 * 2 = 8。

按位右移运算符

运算符示例二

SELECT 8 >> 1
FROM DUAL
8 >> 1
4

表达式8按位右移,先转换成二进制00001000,按位右移一位,右边多出来的一位丢弃,左边不足的补0。变成00000100,换算成10进制是4。相当于除以2,8右移一位,8 / 2 = 4。

总结:按位左移运算符与按位右移运算符,在一定范围内满足,每向左移动一位,相当于乘以2,每向右移动一位,相当于除以2。

学到这里,运算符就学习完了,下面做一些练习巩固一下学习成果。

运算符练习一

选择工资不在5000到12000的员工的姓名和工资
分析一: 首先在两个表达式之间的使用BETWEEN AND运算符,然后不在之间的前面加NOT。

SELECT name, salary
FROM employees
WHERE salary NOT BETWEEN 5000 AND 12000

分析二: 首先单独比较表达式,< 5000,> 12000,然后在表达式之间加OR。

SELECT name, salary
FROM employees
WHERE salary < 5000 OR salary > 12000

运算符练习二

选择在20或50号部门工作的员工姓名。
分析一:使用IN运算符。

SELECT name
FROM employees
WHERE department_id IN (20, 50)

分析二:先分别使用'='运算符比较表达式,然后使用OR运算符。

SELECT name
FROM employees
WHERE department_id = 20 OR department_id = 50

运算符练习三

选择公司中没有管理者的员工姓名

分析一:使用IS NULL

SELECT name
FROM employees
WHERE manager_id IS NULL

分析二:使用<=>

SELECT name
FROM employees
WHERE manager_id <=> NULL

运算符练习四

选择公司中有奖金的员工姓名。

分析一:有奖金,过滤掉没有奖金的结果,使用IS NOT NULL

SELECT name
FROM employees
WHERE commission_pct IS NOT NULL

分析二:使用'<=>',然后表达式前加NOT

SELECT name
FROM employees
WHERE NOT commission_pct <=> NULL

运算符练习五

选择员工姓名的第三个字母是a的员工姓名。

分析:使用LIKE运算符,第三个字母是a,字符a前面使用两个'_'。

SELECT name
FROM employees
WHERE name LIKE '__a%'

运算符练习六

选择姓名中有字母a和k的员工姓名。

分析一:使用LIKE运算符,分别判断字母a在前k在后的和字母k在前a在后的表达式,然后使用OR运算符。

SELECT name
FROM employees
WHERE name LIKE '%a%k%' OR name LIKE '%k%a%'

分析二:使用LIKE运算符,分别判断包含字符a和包含字符k的,然后使用AND运算符。

SELECT name
FROM employees
WHERE name LIKE '%a%' AND name LIKE '%k%'

运算符练习七

选择姓名中以e结尾的员工姓名。

分析一:使用运算符LIKE

SELECT name
FROM employees
WHERE name LIKE '%e'

分析二:使用运算符REGEXP,使用字符'$'。

SELECT name
FROM employees
WHERE name REGEXP 'e$'

运算符练习八

选择部门编号在80-100直接的员工姓名。

分析:使用BETWEEN AND运算符

SELECT name
FROM employees
WHERE department_id BETWEEN 80 AND 100

运算符练习九

选择管理员是100,101,110的员工姓名。

分析:使用IN运算符

SELECT name
FROM employees
WHERE manager_id IN (100, 101, 110)

学到这里,运算符就学完了,明天继续学习其他MySQL的知识。