算数运算符

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

image.png

  • DUAL 伪表,因为只写SELECT不写FROM看着怪
  • 整数+整数=整数
  • 整数+浮点数=浮点数
  • 在MySQL中 + 只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(注:MySQL 中字符串拼接要使用字符串函数CONCAT()实现)
  • 在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。

    比较运算符

    等号=

    比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果 为假则返回0,其他情况则返回NULL。
    比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。

    1. SELECT 1 = 1, 1 = '1', 1 = 0, 'a' = 'a', (5 + 3) = (2 + 6), '' = NULL , NULL = NULL;

    image.png

  • 左右两边是字符串,其比较的是每个字符串中字符的ANSI编码是否相等。

  • 左右两边是数字,则MySQL会按照整数来比较两个值的大小。
  • 一个是数字一个是字符串,则MySQL会将字符串转化为数字进行比较。
  • 如果等号两边有一个为NULL,则比较结果为NULL。
  • 使用安全等于运算符<=>时,两边的操作数的值都为NULL时,返回的结果为1而不是NULL,其他返回结果与等于运算符相同。

    不等于<>或者!=

    1. SELECT 1 <> 1, 1 != 2, 'a' != 'b', (3+4) <> (2+6), 'a' != NULL, NULL <> NULL;

    image.png

  • 如果两边的值有任意一个为NULL, 或两边都为NULL,则结果为NULL

    空运算符IS NULL或者ISNULL

    1. SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;

    image.png

    非空运算符IS NOT NULL

    1. SELECT NULL IS NOT NULL, 'a' IS NOT NULL, 1 IS NOT NULL;

    image.png

    最小值运算符LEAST

    语法格式为:LEAST(值1,值2,...,值n)

    1. SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);

    image.png

    最大值运算符GREATEST

    语法格式为:GREATEST(值1,值2,...,值n)

    1. SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2);

    image.png

    在…之间BETWEEN AND

    A<=C<=B

    1. SELECT D FROM TABLE WHERE C BETWEEN A AND B

    在范围内IN

    1. SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);

    image.png

    不在范围内NOT IN

    1. SELECT 'a' NOt IN ('a','b','c'), 1 NOT IN (2,3), NULL NOT IN ('a','b'), 'a' NOT IN ('a', NULL);

    image.png

    模糊查询LIKE

  • **%**:匹配0个或多个字符。

  • **_**:只能匹配一个字符。
    1. SELECT job_id
    2. FROM jobs
    3. WHERE job_id LIKE IT\_%‘;

    声明转义符ESCAPE

    默认情况下/是转义符,如果不想用这个转义符,可以使用ESCAPE声明一个新的转义符
    1. SELECT job_id
    2. FROM jobs
    3. WHERE job_id LIKE IT_%‘ ESCAPE '¥'
    上面的表示转义符

    正则REGEXP

    用正则来匹配
    1. SELECT * FROM student WHERE name REGEXP '正则表达式'

    逻辑运算符

    image.png

    位运算符

    位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算, 最后将计算结果从二进制变回十进制数
    image.png

    运算符优先级

    数字编号越大,优先级越高,优先级高的运算符先进行计算
    image.png