比较运算符

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

等号运算符(=)

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

在使用等号运算符时,遵循如下规则:

  • 如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSl编码是否相等。 (字符串与字符串比较
  • 如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。(整数与整数比较
  • 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。。如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。(整数与字符串比较

对比: SQL中赋值符号使用=

image.pngimage.png
此时执行,不会有任何的结果NULL参与运算,结果都为null
image.pngimage.png

安全等与运算符(<=>)

安全等于运算符(<=>)与等于运算符(=)的作用是相似的,唯一的区别是’<=>’可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。
image.png

不等于运算符(<>和!=)

不等于运算符不等于运算符(<>和!=)用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。(有null参与运算,结果都为null)

非符号运算符

image.png

IS NULL \ IS NOT NULL \ ISNULL

image.png

  1. # IS NULL \ IS NOT NULL \ ISNULL
  2. #练习:查询表中age为null的数据有哪些
  3. SELECT `name`, age, sport
  4. FROM employee
  5. WHERE age IS NULL;
  6. #或
  7. SELECT `name`, age, sport
  8. FROM employee
  9. WHERE ISNULL(age);
  10. #练习:查询表中age不为null的数据有哪些
  11. SELECT `name`, age, sport
  12. FROM employee
  13. WHERE age IS NOT NULL;
  14. #或
  15. SELECT `name`, age, sport
  16. FROM employee
  17. WHERE NOT age <=> NULL;

image.pngimage.pngimage.pngimage.png

LEAST() \ GREATEST

image.png

BETWEEN…AND……

(边界值均包含)(左边的为下界,右边的为上界)

not between…… and……(不在……区间内)

  1. # 查询表中人年龄在18到19之间的信息
  2. SELECT `name`, age, sport
  3. FROM employee
  4. where age BETWEEN 18 AND 19;
  5. #或者
  6. #WHERE age >= 18 && age <= 19;
  7. #或者
  8. #WHERE age >= 18 AND age <= 19;

image.png(交换18和19后查不到数据)

in (set) \ not in (set)

set为一个集合
image.pngimage.png

LIKE:模糊查询

%:代表不确定个数的字符(0个、1个或多个)
_:代表一个不确定的字符。

  1. # % : 代表不确定个数的字符 (0个,1个,或多个)
  2. #查询姓名中包含6的人员信息
  3. SELECT `name`, age, sport
  4. FROM employee
  5. WHERE `name` LIKE '%6%';
  6. #查询姓名中以6开头的人员信息
  7. SELECT `name`, age, sport
  8. FROM employee
  9. WHERE `name` LIKE '6%';
  10. #查询姓名中以6结尾的人员信息
  11. SELECT `name`, age, sport
  12. FROM employee
  13. WHERE `name` LIKE '%6';
  14. #练习:查询name中包含字符'a'且包含字符'e'的员工信息
  15. #写法1:
  16. SELECT `name`
  17. FROM employee
  18. WHERE `name` LIKE '%a%' AND `name` LIKE '%e%';
  19. #写法2:
  20. SELECT `name`
  21. FROM employee
  22. WHERE `name` LIKE '%a%e%' OR `name` LIKE '%e%a%';
  23. # _ :代表一个不确定的字符
  24. #练习:查询第3个字符是'a'的人员信息
  25. SELECT `name`
  26. FROM employee
  27. WHERE `name` LIKE '__a%';
  28. #练习:查询第2个字符是_且第3个字符是'a'的人员信息
  29. #需要使用转义字符: \
  30. SELECT `name`
  31. FROM employee
  32. WHERE `name` LIKE '_\_a%';
  33. #或者 (了解)
  34. #使用了ESCAPE后,这里把$也当做转义字符
  35. SELECT last_name
  36. FROM employees
  37. WHERE last_name LIKE '_$_a%' ESCAPE '$';

REGEXP运算符(正则表达式)

REGEXP运算符用来匹配字符串,语法格式为:

expr REGEXP 匹配条件。

  • 如果expr满足匹配条件,返回1;
  • 如果不满足,则返回0。
  • 若expr或匹配条件任意一个为NULL,则结果为NULL。

    (1)‘^’匹配以该字符后面的字符开头的字符串。 (2)‘$’匹配以该字符前面的字符结尾的字符串。 (3)‘.’匹配任何一个单字符。 (4)“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。 (5)‘’匹配零个或多个在它前面的字符。例如,“x”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字,而“”匹配任何数量的任何字符。