学习MySQL的第二天

附文章用到的emp1表

一、算术运算符

  运算符   名   称                 作用       示例
      +加法运算符计算两个值或表达式的和 SELECT A+B
      -

减法运算符

计算两个值或表达式的和 SELECT A- B
      *乘法运算符计算两个值或表达式的和 SELECT A* B
   / (DIV)除法运算符计算两个值或表达式的和 SELECT A / B
% (MOD)求余运算符计算两个值或表达式的和 SELECT A%B

1、算术运算符 + - * / %

SELECT 100, 100 + 0, 100 - 10,100 - 2.5
FROM DUAL;

SELECT 100 / 50, 100 / 3, 100 * 50
FROM DUAL;

SELECT 12 % 3, 45 % 6, 7 % 2, -12 % 9, 9 MOD - 4,-9 % -4
FROM DUAL;

注意:

(1)取模运算,结果的符号取决于被模数的符号

(2)在SQL中,‘+’没有连接作用,此时会将字符/字符串转化为数值(隐式转化)

(3)字符型的数字转化为int型数值,字符/字符串在下面的演示中转化为了0 ,Null参与运算结果还是NUll,例:

SELECT 100 + '1', 100 + 'A', 100 + "AB", 100 + NULL
FROM DUAL;

练习:查询薪金为偶数的人

SELECT id,name,salary
FROM emp1
WHERE salary % 2 = 0;

2、比较运算符: =  <=>  <>  !=  <  <=  >  >=

2.1 ‘ = ’ 

相当于C语言中的“==”
注意:

(1)字符串存在隐式转换,如果转换数值不成功,则看作0,例:

SELECT 1 = 2,1 = '1', 1 = 'a'
FROM DUAL;

(2)如果是纯字符串进行比较,则不进行隐式转换,而是比较ASCLL码,例:

SELECT 'a' = 'a','ab' = 'ab','a' = 'b','ab' = 'bc'
FROM DUAL;

(3)只要有NULL参与判断,结果就为NULL

SELECT 1 = NULL,NULL =NULL
FROM DUAL;

补充示例:此种情况执行时,不会有任何结果,因为虽然奖金里面有值为NULL,但是NULL参与运算结果都为NULL,所以一条数据也不显示

SELECT id,奖金
FROM emp1
WHERE 奖金 = NULL;

 

2.2  ‘<=>’ :安全等于

’<=>‘ 当NULL不参与时与 ’=‘ 功能相同,可以看作是专门用来应对NULL参与运算情况的帮助

SELECT 1 <=> '1'
FROM DUAL;
SELECT 1 <=> NULL,NULL <=> NULL
FROM DUAL; 

2.3 其他符号

SELECT 3 <> 2,'4' <> NULL,'' != NULL,NULL != NULL
FROM DUAL;

3、IS NULL \ IS NOT NULL \ ISNULL

3.1 IS NULL示例

# 查询表中 奖金 为 NULL 的数据有哪些
SELECT name,奖金
FROM emp1
WHERE 奖金 IS NULL

3.2 IS NOT NULL示例

# 查询表中 奖金 不为 NULL 的数据有哪些
SELECT name,奖金
FROM emp1
WHERE 奖金 IS NOT NULL
# 或(此时又显示了<=>的特殊作用)
SELECT name,奖金
FROM emp1
WHERE NOT 奖金 <=> NULL
筛选前的
筛选后的​​​​

'奖金 <=> NULL  实现原理: 若奖金部位NULL,则会返回0,而NOT 则会使0变1,1变0,从而实现对非NULL值的筛选

4、LEAST() \ GREATEST

基本格式:LEAST(value1,value2,...):展示最大值; GREATEST(value1,value2,...): 展示最小值

# 基本展示
SELECT LEAST('A','H','a','P'),GREATEST('A','H','a','P')
FROM DUAL;

5、 BETWEEN 条件1 AND 条件2

注意:查询在条件1和2之间的数据时,结果是包含边界的,条件1属于上界,条件2属于下界,需要保证上界小,例:

# 查询薪水在5-8之间
SELECT salary,name,id
FROM emp1
WHERE salary BETWEEN 5 AND 7;
# 不在这个范围内
SELECT salary,name,id
FROM emp1
WHERE NOT salary BETWEEN 5 AND 7;
薪水在5-8之间
不在这个范围内

 6、in(set) \ not in(set)

 用于过滤数据的操作符,允许根据值列表或子查询的结果筛选记录

# 查询薪金为5,6,7的员工信息
SELECT id,name,salary
FROM emp1
WHERE salary = 5 OR salary = 6 OR salary = 7;
# 简短处理
SELECT id,name,salary
FROM emp1
WHERE salary IN (5,6,7);

7、LIKE:模糊查询

以查询 name 中带有‘O’的员工信息为例

错误示范: 此时LIKE可以看作 =,所以错误 

SELECT `name`
FROM emp1
WHERE `name` LIKE 'O';

正确示范:

# % : 代表不确定个数的字符
# 在navicat中不区分大小写
SELECT `name`
FROM emp1
WHERE `name` LIKE '%O%';
# '%O%' :表示 O 前面或者后面可能有多个字符的情况

小练:

(1)查询 name 中以‘O’开头的员工信息

SELECT `name`
FROM emp1
WHERE `name` LIKE 'O%' 

(2)查询 name 中以‘O’结尾的员工信息

SELECT `name`
FROM emp1
WHERE `name` LIKE '%O' 

 

(3)查询既包含字符‘o’和‘m’的人员信息

SELECT `name`
FROM emp1
WHERE `name` LIKE "%O%M%";

 

8、 ‘’_ ‘’

代表“一个”不确定的字符,可以叠加

例:(1)查询第二个字符为‘o’

SELECT `name`
FROM emp1
WHERE `name` LIKE '_o%';

(2)查询第二个字符为‘_’,第三个字符为Y

# 要使用转义字符: \ 来表示‘_’
SELECT `name`
FROM emp1
WHERE `name` LIKE '_\_Y%';

        今天是学习MySQL的第二天,因为今天课程比较多,所以学习的内容比较少,整理的也比较匆忙,还请大家见谅,明后两天时间较为充足,会继续分享更加丰富的MySQL的学习笔记,希望能对大家产生帮助,同时也欢迎大家来一同交流和纠正我的错误,一起进步。

        每当学习并掌握了新的知识,就会有一点点的成就感,看似每天的努力微不足道,但它也会通过这一点点的成就感潜移默化的激励着我们,让我们更加充满信心。

        须知少日拏云志,曾许人间第一流。我们还年轻,我们还有无限可能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力奋斗的小杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值