比较运算符
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。
比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。
等号运算符(=)
- 等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0
在使用等号运算符时,遵循如下规则:
- 如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSl编码是否相等。 (字符串与字符串比较)
- 如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。(整数与整数比较)
- 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。。如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。(整数与字符串比较)
对比: SQL中赋值符号使用=
此时执行,不会有任何的结果NULL参与运算,结果都为null
安全等与运算符(<=>)
安全等于运算符(<=>)与等于运算符(=)的作用是相似的,唯一的区别是’<=>’可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。
不等于运算符(<>和!=)
不等于运算符不等于运算符(<>和!=)用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。(有null参与运算,结果都为null)
非符号运算符
IS NULL \ IS NOT NULL \ ISNULL
# IS NULL \ IS NOT NULL \ ISNULL
#练习:查询表中age为null的数据有哪些
SELECT `name`, age, sport
FROM employee
WHERE age IS NULL;
#或
SELECT `name`, age, sport
FROM employee
WHERE ISNULL(age);
#练习:查询表中age不为null的数据有哪些
SELECT `name`, age, sport
FROM employee
WHERE age IS NOT NULL;
#或
SELECT `name`, age, sport
FROM employee
WHERE NOT age <=> NULL;
LEAST() \ GREATEST
BETWEEN…AND……
(边界值均包含)(左边的为下界,右边的为上界)
not between…… and……(不在……区间内)
# 查询表中人年龄在18到19之间的信息
SELECT `name`, age, sport
FROM employee
where age BETWEEN 18 AND 19;
#或者
#WHERE age >= 18 && age <= 19;
#或者
#WHERE age >= 18 AND age <= 19;
(交换18和19后查不到数据)
in (set) \ not in (set)
set为一个集合
LIKE:模糊查询
%:代表不确定个数的字符(0个、1个或多个)
_:代表一个不确定的字符。
# % : 代表不确定个数的字符 (0个,1个,或多个)
#查询姓名中包含6的人员信息
SELECT `name`, age, sport
FROM employee
WHERE `name` LIKE '%6%';
#查询姓名中以6开头的人员信息
SELECT `name`, age, sport
FROM employee
WHERE `name` LIKE '6%';
#查询姓名中以6结尾的人员信息
SELECT `name`, age, sport
FROM employee
WHERE `name` LIKE '%6';
#练习:查询name中包含字符'a'且包含字符'e'的员工信息
#写法1:
SELECT `name`
FROM employee
WHERE `name` LIKE '%a%' AND `name` LIKE '%e%';
#写法2:
SELECT `name`
FROM employee
WHERE `name` LIKE '%a%e%' OR `name` LIKE '%e%a%';
# _ :代表一个不确定的字符
#练习:查询第3个字符是'a'的人员信息
SELECT `name`
FROM employee
WHERE `name` LIKE '__a%';
#练习:查询第2个字符是_且第3个字符是'a'的人员信息
#需要使用转义字符: \
SELECT `name`
FROM employee
WHERE `name` LIKE '_\_a%';
#或者 (了解)
#使用了ESCAPE后,这里把$也当做转义字符
SELECT last_name
FROM employees
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]”匹配任何数量的数字,而“”匹配任何数量的任何字符。