当前位置: 首页 > article >正文

MySQL 04 章——运算符

一、算数运算符

  1. 算数运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式
    运算符名称作用示例
    +加法运算符计算两个值或表达式的和SELECT A+B
    -减法运算符计算两个值或表达式的差SELECT A-B
    *乘法运算符计算两个值或表达式的乘积SELECT A*B
    /或DIV除法运算符计算两个值或表达式的商SELECT A/B或者SELECT A DIV B
    %或MOD求模(求余)运算符计算两个值或表达式的余数SELECT A%B或者SELECT A MOD B
  2. 举例(取模运算的结果的符号与被模数的符号相同):
  3. 在Java语言中,结果是1001。但是在MySQL中,是101。因为在MySQL中,+没有连接作用,只表示加法运算。此时,会将字符串转换为数值(隐式转换):
  4. 在MySQL中,只有单引号中是数字时,才能进行隐式转换,如果转换数值不成功,就转换为0:

二、比较运算符

  1. 比较运算符用来对表达式左边的操作数额右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其它情况则返回NULL
    运算符名称作用示例
    =等于运算符判断两个值、字符串或表达式是否相等SELECT C FROM TABLE WHERE A = B;
    <=>安全等于运算符安全地判断两个值、字符串或表达式是否相等SELECT C FROM TABLE WHERE A <=> B;
    <>(!=)不等于运算符判断两个值、字符串或表达式是否不相等SELECT C FROM TABLE WHERE A <> B;或者SELECT C FROM TABLE WHERE A != B;
    <小于运算符判断前面的值、字符串或表达式是否小于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A < B;
    <=小于等于运算符判断前面的值、字符串或表达式是否小于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A <= B;
    >大于运算符判断前面的值、字符串或表达式是否大于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A > B;
    >=大于等于判断前面的值、字符串或表达式是否大于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A >= B;
  2. 举例:
  3. 注意,WHERE后面跟的条件判断结果是1(即true),才会被筛选出来。而commission_pct = NULL的结果始终是NULL(等于运算符和不等于运算符,它们的左右两边的操作数如果有NULL,那么返回结果必然是NULL):
  4. 安全等于运算符(<=>)与等于运算符(=)的作用是相似的,唯一的区别是安全等于运算符可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不是NULL;当一个操作数为NULL时,其返回值为0,而不为NULL
  5. 非符号类型的运算符:
    运算符名称作用示例
    IS NULL为空运算符判断值、字符串或表达式是否为空SELECT B FROM TABLE WHERE A IS NULL;
    IS NOT NULL不为空运算符判断值、字符串或表达式是否不为空SELECT B FROM TABLE WHERE A IS NOT NULL;
    LEAST最小值运算符在多个值中返回最小值SELECT LEAST(A,B) FROM TABLE;
    GREATEST最大值运算符在多个值中返回最大值SELECT GREATEST(A,B) FROM TABLE;
    BETWEEN AND两值之间的运算符判断一个值是否在两个值之间SELECT D FROM TABLE WHERE C BETWEEN A AND B;
    ISNULL为空运算符判断值、字符串或表达式是否为空SELECT B FROM TABLE WHERE ISNULL(A);
    IN属于运算符判断一个值是否为列表中的任意一个值SELECT B FROM TABLE WHERE A IN (A,B);
    NOT IN不属于运算符判断一个值是否不是一个列表中的任意一个值SELECT B FROM TABLE WHERE A NOT IN (A,B);
    LIKE模糊匹配运算符判断一个值是否符合模糊匹配规则SELECT C FROM TABLE WHERE A LIKE B;
    REGEXP正则表达式运算符判断一个值是否符合正则表达式的规则SELECT C FROM TABLE WHERE A REGEXP B;
    RLIKE正则表达式运算符判断一个值是否符合正则表达式的规则SELECT C FROM TABLE WHERE A RLIKE B;
  6. 举例:
  7. _(下划线)代表一个不确定的字符:
  8. REGEXP运算符:
    1. '^'匹配以该字符后面的字符开头的字符串
    2. '$'匹配以该字符前面的字符结尾的字符串
    3. '.'匹配任何一个单字符
    4. "[...]"匹配在方括号内的任何字符。例如,"[abc]"匹配"a"或"b"或"c"。为例命名字符的范围,使用一个'-'。"[a-z]"匹配任何字母,"[0-9]"匹配任何数字
    5. '*'匹配0个或多个在它前面的字符。例如,"x*"匹配任何数量的'x'字符,"[0-9]*"匹配任何数量的数字
  9. 当字符串与数字进行运算或比较时,如果它能转换成数值,就用转换后的数值与数字进行运算或比较。如果它不能转换成某个数值,它就会被转换为0
  10. 两个字符串进行比较时 ,依次比较它们相应位置字符的ASCII码值
  11. 当两个字符串进行运算时,把这两个字符串转为数值

三、逻辑运算符

  1. 逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或NULL(逻辑运算符的操作数必须是本身就能得出真或假的)
    运算符作用示例
    NOT 或 !逻辑非SELECT NOT A
    AND 或 &&逻辑与SELECT A  AND B或者SELECT A && B
    OR 或 ||逻辑或SELECT A OR B或者SELECT A || B
    XOR逻辑异或SELECT A XOR B(左右两边的判断结果不一样,就是真)
  2. 举例:

四、位运算符

  1. 位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行运算,最后将计算结果从二进制数变回十进制数
    运算符作用示例
    &按位与SELECT A & B
    |按位或SELECT A | B
    ^按位异或SELECT A ^ B
    ~按位取反SELECT ~A
    >>按位右移SELECT A>>1(1代表移动1位)
    <<按位左移SELECT B<<1(1代表移动1位)
  2. 按位与(以12 & 5为例):12的二进制表示为00001100,5的二进制表示为00000101。把0当作假,1当作真。&理解为且,因此0 & 1为0。计算结果为00000100,转为十进制,得到4
  3. 按位或(以12 | 5为例):12的二进制表示为00001100,5的二进制表示为00000101。把0当作假,1当作真。|理解为或,因此0 | 1为1。计算结果为00001101,转为十进制,得到13
  4. 按位异或(以为12 ^ 5为例):12的二进制表示为00001100,5的二进制表示为00000101。把0当作假,1当作真。^理解为异或,因此计算结果为00001001,转为十进制,得到9
  5. 按位取反运算符,就是将给定的值的二进制逐位进行取反操作,0变成1,1变成0
  6. 左移:以十进制数4为例,4对应的二进制是00000100。将整体左移一位,变成00001000。转为十进制是8
  7. 右移:以十进制数8为例,8对应的二进制是00001000。将整体右移一位,变成00000100。转为十进制是4

五、运算符的优先级

  1. OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行运算,再与OR中的操作数结合
  2. ()的优先级最高,最先计算()里的

六、课后练习

  1. 选择工资不在5000到12000的员工的姓名和工资
  2. 选择在20或50号部门工作的员工姓名和部门号
  3. 选择公司中没有管理者的员工姓名及jod_id
  4. 选择公司中有奖金的员工姓名,工资和奖金级别
  5. 选择员工姓名的第三个字母是a的员工姓名
  6. 选择姓名中有字母a和k的员工姓名
  7. 显示出表employees表中first_name以'e'结尾的员工信息
  8. 显示出表employees部门编号在80-100之间的姓名、工种
  9. 显示出表employees的manager_id是100,101,110的员工姓名、工资和管理者id

该笔记根据尚硅谷的MySQL课程整理 


http://www.kler.cn/a/469602.html

相关文章:

  • 100万并发用户的分布式频道聊天系统
  • CSP初赛知识学习计划(第三天)
  • 【无线传感网】无线传感器网络安全
  • PostgreSQL 表达式
  • jenkins插件下载和从gitlab中拉取文件传送到虚拟机中
  • asp.net core框架搭建4-部署IIS/Nginx/Docker
  • 【AutoSAR】【底软自动化】Arxml自动配置平台
  • 青少年编程与数学 02-006 前端开发框架VUE 01课题、VUE简介
  • 二叉树相关的题,判断二叉树是否是单值二叉树,相同的树,对称二叉树,另一棵树的子树,KY11 二叉树遍历
  • 数据结构-单链表(C语言版)
  • AutoSar架构学习笔记
  • 跨年战揭开本地生活新赛季:美团、抖音和快手争夺冰雪经济
  • 每天40分玩转Django:Django实战 - 在线打印服务系统
  • 基于Python读取ZIP和TAR格式压缩包教程
  • 《Vue3实战教程》35:Vue3测试
  • 概述(讲讲python基本语法和第三方库)
  • SkinnedMeshRenderer相关知识
  • Linux下ssh远程命令详解及示例
  • 反规范化带来的数据不一致问题的解决方案
  • SQL拦截器 翻译整个sql语句