MySQL学习笔记-运算符详解-附多道运算符练习题

运算符笔记

所有笔记的链接

本文是学习尚硅谷MYSQL的笔记,素材什么的都来源尚硅谷,特此说明,同时建议大家还是跟着b站上面老师的课程走一遍。

  • 数字与字符之间进行比较,字符会进行隐式转换,字符会转换成0
  • NULL参与’='判断,结果就为NULL
  • 可以用安全等于:’<=>'判断NULL
#运算符判断中加入NULL查看结果
#不加入NULL进行判断
SELECT last_name, salary,commission_pct
FROM employees
#结果如下面图片,会显示commission_pct为NULL的信息
#用WHERE过滤commission_pct = 0.25的
SELECT last_name, salary,commission_pct
FROM employees
WHERE commission_pct = 0.25
#判断语句中加入NULL
SELECT last_name, salary,commission_pct
FROM employees
WHERE commission_pct = NULL

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

那如果就是想要判断值为NULL的情况,就用安全等于号’<=>'过滤,它与等于号类似,只是它可以对于空值进行判断

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

在这里插入图片描述

显示的全部都是commission_pct为NULL的值

非符号类型的运算符

空运算符

#IS NULL \ IS NOT NULL

IS NULL其实如同上面的安全等于NULL : <=> NULL

#查询commission_pct 为 NULL的数据
SELECT last_name, salary,commission_pct
FROM employees
WHERE commission_pct IS NULL

很明显,结果同上面是一样的,IS NOT NULL顾名思义就知道是排除值是NULL的数据

最小运算符

#显示所有员工中firstname和lastname 中较小的数据
#首先两个都展示一下
SELECT first_name,last_name
FROM employees

在这里插入图片描述

#下面调用LEAST函数
SELECT LEAST(first_name,last_name)
FROM employees
#根据结果,显示的是姓和名中较小的一个

在这里插入图片描述

最大运算符同上类似,不再演示


BETWEEN AND运算符

#显示工资在6000 - 8000的员工信息
1.
SELECT last_name, first_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000
2.查询工资不在6000 - 8000的员工信息
SELECT last_name, first_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000

在这里插入图片描述

​ 不在区间内:

在这里插入图片描述


IN与NOT IN运算符

between and 能够锁定一个区间,in的话锁定的值是离散的

#查询部门id为10 20 30的员工的信息
SELECT last_name, salary,department_id
FROM employees
WHERE department_id = 10 OR department_id = 20 OR department_id = 30
#使用IN
SELECT last_name, salary,department_id
FROM employees
WHERE department_id IN (10,20,30)			#作用是同上的
#员工部门id不是10,20,30的就用NOT IN就行
SELECT last_name, salary,department_id
FROM employees
WHERE department_id NOT IN (10,20,30)

在这里插入图片描述

Link:模糊查询

LIKE运算符通常使用如下通配符:

“%”:匹配0个或多个字符。
“_”:只能匹配一个字符。
跟正则表达式很像
#查询lastname中包含字符'a'的员工信息
#包含的话前面和后面都需要加上%
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%'  
#单词的组成结构是: 一部分 a 一部分 因为前后都加了%,因此只要包含a的单词就满足



如果是a% 就代表单词的结构是以a开头的单词,

在这里插入图片描述

以a开头的索引:a%

在这里插入图片描述

#查询lastname中包含a 和 e的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%e%' OR '%e%a%'

在这里插入图片描述

#查询第三个字符是a的员工信息
#因为%代表匹配0或者无数,我们需要明确数字时用_
SELECT last_name
FROM employees
WHERE last_name LIKE '__a%'



#查询第二个字符就是下划线'_',第三个字符是a的员工信息
#可以用转义字符进行索引
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%'


正则表达式

其实在很多语言中都有正则表达式的学习,可以自行百度,有很多的资料介绍

常用统配符号(来源于尚硅谷课件)

(1)‘^’匹配以该字符后面的字符开头的字符串。
(2)‘$’匹配以该字符前面的字符结尾的字符串。
(3)‘.’匹配任何一个单字符。
(4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
(5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,而“*”匹配任何数量的任何字符。

运算符号练习题

1.选择工资不在5000 - 12000的员工的姓名和工资

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

2.选择在20或50号部门工作的员工姓名和部门号

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

3.选择公司中没有管理者的员工姓名和job_id

SELECT last_name, job_id, manager_id
FROM employees
WHERE manager_id <=> NULL

4.选择公司中有奖金的员工姓名,工资和奖金的级别

#有奖金,就代表commission_pct不为NULL
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL

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

SELECT last_name
FROM employees
WHERE last_name LIKE '__a%'		#注意后面要加上%

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

#使用or  名字中含有...a...k..   或者 ...k...a...的就查询
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%k%' OR last_name LIKE '%k%a%'

#使用and,查询名字中同时包含..a.. 和 ..k..的信息
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%k%'

7.查询表employees中firstname 以’e‘为结尾的信息

#那就是查询单词结构是...e的员工信息
SELECT first_name
FROM employees
WHERE first_name LIKE '%e'


#使用正则表达式
SELECT first_name
FROM employees
WHERE first_name REGEXP 'e$'

8.显示出表employees部门编号在80-100之间的姓名和工种

#使用between and 进行索引
SELECT last_name,job_id
FROM employees
WHERE department_id BETWEEN 80 AND 100
#由于我们设置时候id间隔是10,80-100之间的id就是80 90 100,直接用IN就行
SELECT last_name,job_id
FROM employees
WHERE department_id IN (80,90,100)
#用IN的话,就是将所有可能的情况都写上

9.显示表中manager_id是100,101,110的员工姓名,工资,管理者的id

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

希望对大家有帮助 😃 一起进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值