MySQL-运算符

文章目录

    • [1. 运算符概述](#1. 运算符概述)
    • [2. 算术运算符](#2. 算术运算符)
    • [3. 比较运算符](#3. 比较运算符)
    • [4. 逻辑运算符](#4. 逻辑运算符)
    • [5. 位运算符](#5. 位运算符)

1. 运算符概述

  • 在 MySQL 中,可以通过运算符来获取表结构以外的另一种数据。MySQL 所提供的运算符可以直接对表中数据或字段进行运算,进而实现用户的新需求,增强了 MySQL 的功能。每种数据库都支持 SQL 语句,但是它们也都有各自支持的运算符。我们除了需要学会使用 SQL 语句外,还需要掌握各种运算符。
  • 运算符的分类: 算术运算符、比较运算符、逻辑运算符、位运算符

2. 算术运算符

  • 算术运算符是 SQL 中最基本的运算符,MySQL 支持的运算符包括加、减、乘、除和取余运算,它们是最常用、最简单的一类运算符。下表列出了这些运算符的作用和使用方法。

    运算符 作用 使用方法
    + 加法运算 用于获得一个或多个值的和
    - 减法运算 用于从一个值中减去另一个值
    * 乘法运算 使数字相乘,得到两个或多个值的乘积
    / 除法运算,返回商 用一个值除以另一个值得到商
    %,MOD 求余运算,返回余数 用一个值除以另一个值得到余数
  • 注意事项:

    1. 数学运算中,除数为 0 的除法是没有意义的。所以在除法运算和取余运算中,如果除数为 0,那么返回结果为 NULL。

3. 比较运算符

  • 当使用 SELECT 语句进行查询时,MySQL 允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。MySQL 支持的比较运算符如下表所示。

    运算符 作用
    = 等于
    <=> 安全的等于
    <> 或者 != 不等于
    <= 小于等于
    >= 大于等于
    > 大于
    IS NULL 或者 ISNULL 判断一个值是否为空
    IS NOT NULL 判断一个值是否不为空
    BETWEEN AND 判断一个值是否落在两个值之间
  • 等于运算符(=)注意事项:

    1. 若有一个或两个操作数为 NULL,则比较运算的结果为 NULL。
    2. 若两个操作数都是字符串,则按照字符串进行比较。
    3. 若两个操作数均为整数,则按照整数进行比较。
    4. 若一个操作数为字符串,另一个操作数为数字,则 MySQL 可以自动将字符串转换为数字。
  • 安全等于运算符(<=>)注意事项:

    • 当两个操作数均为 NULL 时,其返回值为 1 而不为 NULL;
    • 而当一个操作数为 NULL 时,其返回值为 0 而不为 NULL。

4. 逻辑运算符

  • 逻辑运算符又称为布尔运算符,用来确定表达式的真和假。MySQL中支持的逻辑运算符如下表所示。

    运算符 作用
    NOT 或者 ! 逻辑非
    AND 或者 && 逻辑与
    OR 和 || 逻辑或
    XOR 逻辑异或
  • 注意事项:

    • NOT 的优先级低于 +,因此NOT 1+1相当于NOT(1+1),先计算1+1,然后再进行 NOT 运算,由于操作数不为 0,因此NOT 1+1的结果是 0;
    • 相反,! 的优先级别要高于 +,因此! 1+1相当于(!1)+1,先计算!1结果为 0,再加 1,最后结果为 1。

5. 位运算符

  • 所谓位运算,就是按照内存中的比特位(Bit)进行操作,这是计算机能够支持的最小单位的运算。程序中所有的数据在内存中都是以二进制形式存储的,位运算就是对这些二进制数据进行操作。

  • 位运算一般用于操作整数,对整数进行位运算才有实际的意义。整数在内存中是以补码形式存储的,正数的补码形式和原码形式相同,而负数的补码形式和它的原码形式是不一样的,这一点大家要特别注意;这意味着,对负数进行位运算时,操作的是它的补码,而不是它的原码。

    运算符 说明 使用形式 举例
    | 位或 a | b 5 | 8
    & 位与 a & b 5 & 8
    ^ 位异或 a ^ b 5 ^ 8
    ~ 位取反 ~a ~5
    << 位左移 a << b 5 << 2,表示整数 5 按位左移 2 位
    >> 位右移 a >> b 5 >> 2,表示整数 5 按位右移 2 位
相关推荐
Lucifer三思而后行1 小时前
最近折腾了一下金仓数据库的备份恢复
数据库·备份恢复
草莓熊Lotso2 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
进击的荆棘3 小时前
MySQL——库的操作
数据库·mysql
2601_967980113 小时前
“小程序·云开发”上线 助力开发者的高效利器
数据库·存储管理·小程序云开发·云函数·开发者工具
zhangjw343 小时前
1-9 SELECT 查询基础:where、group by、having、order by、limit offset
数据库·postgresql·pg数据库
计算机毕设定制辅导-无忧学长3 小时前
《基于Spring Boot的迷游哈游戏综合服务平台的开发》
java·vue.js·spring boot·mysql·迷游哈游戏综合服务平台
唐老板4 小时前
Postgres 慢查询,先取证再动手
数据库·ai编程
笃行35010 小时前
数据库性能优化的五处内核改造,KingbaseES 配了四件诊断工具
数据库
非优秀程序员12 小时前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
SelectDB17 小时前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库