MySQL 04 章——运算符

发布于:2025-02-11 ⋅ 阅读:(92) ⋅ 点赞:(0)

一、算数运算符

  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]*"匹配任何数量的数字

三、逻辑运算符

  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. 位运算符是在二进制数上进行计算的运算符。位运算符会(1)先将操作数变成二进制数,(2)然后进行运算,(3)最后将计算结果从二进制数变回十进制数
    运算符 作用 示例
    & 按位与 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

七、小结 

  1. 除法的结果一定是浮点数
  2. 取模运算的结果的符号与被模数的符号相同
  3. MySQL中,+没有连接作用。字符串参与运算时(字符串和数字、字符串和字符串)(1)字符串中的内容能直接转成数字,就转成数字(2)字符串中的内容不能直接转成数字,就转成0
  4. 字符串和数字进行比较,遵循上述规则。当两个字符串进行比较时,是在挨个比较每个字符的ANSI码
  5. 安全等于运算符(<=>)可以用来对NULL进行判断(1)当两个值都为NULL时,结果为1,即true(2)一个值为NULL,一个值不为NULL时,结果为0,即false
  6. ISNULL(),IS NULL,IS NOT NULL都是用来对NULL进行判断的
  7. _代表一个不确定的字符,%代表多个不确定的字符(包含0个)
  8. 如果需要对某个字符转义:在它前面加\。如果我们不想用\,想把$当作转义字符,就 ESCAPE '$'
  9. 重点看REGEXP
  10. AND的优先级高于OR

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


网站公告

今日签到

点亮在社区的每一天
去签到