一起养成写作习惯!这是我参与「掘金日新计划 · 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的知识。