[MySQL] 运算符(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [MySQL] 运算符

a61e6005e51243529b8306386c576b42.jpg

资料

根据【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!】 整理

资料链接:

百度网盘:

链接:https://pan.baidu.com/s/1KboU_3EZJxrezMWZ2klP6g

提取码:1234

阿里云盘

【MySQL】

1. 算术运算符

算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/ 或 div)和取模(% 或 mod)运算。

1.1 加法与减法运算符

SELECT
    100,
    100 + 0,
    100 - 0,
    100 + 50,
    100 + 50 * 30,
    100 + 35.5,
    100 - 35.5
FROM DUAL;

SELECT 100 + '1'  
FROM DUAL;

在Java语言中,结果是:1001。

在SQL中,+ 没有连接的作用,就表示加法运算。此时,会将字符串转换为数值(隐式转换)

SELECT 100 + 'a' # 此时将'a'看做 0 处理
FROM DUAL;

SELECT 100 + NULL  # null 值参与运算,结果为null
FROM DUAL;

  • 由运算结果可以得出如下结论:
  • 1.一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;
  • 2.一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;
  • 3.加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;
  • 4.在Java中,+ 的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中 + 只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL中字符串拼接要使用字符串函数 CONCAT() 实现)

1.2 乘法与除法运算符

SELECT
    100,
    100 * 1,
    100 * 1.0,
    100 / 1.0,
    # 除法更多的情况除不尽,会保留一定的小数位
    # 所以结果有小数
    100 / 2,
    100 + 2 * 5 / 2,
    100 / 3,
    100 DIV 0 # 分母如果为0,则结果为null
FROM DUAL;

  • 由运算结果可以得出如下结论:
  • 1.一个数乘以整数1和除以整数1后仍得原数;
  • 2.一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;
  • 3.一个数除以整数后,不管是否能除尽,结果都为一个浮点数;
  • 4.一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位;
  • 5.乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。
  • 6.在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。

1.3 求模(求余)运算符

# 取模运算: %  mod
# 符号前面的数为被模数,符号后面的为模数
# 结果的符号与被模数一致,与模数无关
SELECT
    12 % 3,
    12 % 5,
    12 MOD -5,
    -12 % 5,
    -12 % -5
FROM DUAL;

练习:查询员工id为偶数的员工信息

SELECT *
FROM employees
WHERE employee_id%2 = 0;

2. 比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。

比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。

2.1 符号类型的比较运算符

=  <=>  <> !=  <  <=  >  >=

2.1.1 = 的使用

等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。

  • 在使用等号运算符时,遵循如下规则:
  • 1.如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSI编码是否相等。
  • 2.如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。
  • 3.如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
  • 4.如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。
SELECT
    1 = 2,
    1 != 2,
    # 字符串与数值进行比较
    # 字符串存在隐式转换。
    # 会尝试将其转换为数值
    # 如果转换数值不成功,则看做0
    1 = '1',
    1 = 'a',
    0 = 'a'
FROM DUAL;

SELECT
    #两边都是字符串的话,则按照ANSI的比较规则进行比较。
    'a' = 'a',
    'ab' = 'ab',
    'a' = 'b'
FROM DUAL;

SELECT
    # 只要有null参与判断,结果就为null
    1 = NULL,
    NULL = NULL
FROM DUAL;

查询 commission_pct 为 null 的记录:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct = NULL;

此时执行,不会有任何的结果,因为比较结果为1才会加入结果集,null参与比较结果都为null,所以都不会加入结果集,最后查询的结果为空。

2.1.2 <=> 安全等于

为 null 而生,安全等于可以进行 null 的比较。

其他与等于相同。

SELECT
    1 <=> 2,
    # 数值与字符串进行比较,会尝试将其转化为字符串
    1 <=> '1',
    1 <=> 'a',
    0 <=> 'a'
FROM DUAL;

SELECT
    # 安全等于可以进行 null 的比较
    1 <=> NULL,
    NULL <=> NULL
FROM DUAL;

查询 commission_pct 为 null 的记录:

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

使用安全等于可以进行 null 的比较,commission_pct 值等于 NULL,为真,所以可以查询出结果。

2.1.3 <> 与 !=

不等于运算符(<>和!=)用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。

与 = 一样,如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

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

2.1.4 < 、<= 、>= 、>

与 = 一样,如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

数值与字符串进行比较,会尝试将其转化为字符串。

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
关系型数据库 MySQL Java
MYSQL运算符和分页
MYSQL运算符和分页
47 0
|
5天前
|
SQL 关系型数据库 MySQL
mysql基本查询、运算符、排序和分页
mysql基本查询、运算符、排序和分页
|
8月前
|
SQL 关系型数据库 MySQL
MySql where 查询条件与运算符
MySql where 查询条件与运算符
68 0
|
5天前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
38 0
|
5天前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
25 0
|
5天前
|
存储 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-3
MySQL基础篇(运算符、排序分页、多表查询、函数)
58 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-2
MySQL基础篇(运算符、排序分页、多表查询、函数)
41 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-1
MySQL基础篇(运算符、排序分页、多表查询、函数)
72 0
|
5天前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
27 0
|
9月前
|
SQL 安全 关系型数据库
MySQL运算符大总结
MySQL运算符大总结