LIKE操作符
mysql中利用like可以进行字符的模糊匹配,用于where语句中。
比如下表中,
希望查找姓‘大‘的学生有哪些,我们可以用:
select * from students where name like ‘大%’;
得到结果如下:
通配符:
‘%‘:类似正则中的*,可以通配任意多个字符。‘大%’ 表示以‘大’开头的字段,‘%大’表示以‘大’结尾的字段,‘%大%’表示包含‘大’的字段。
‘_‘:通配一个字符。‘大_’ 表示以大开头且后面只有一个字符的字段。
escape:转义通配符,有时字符里包含%或者_,使用escape转义成普通字符。假设学生里有外国人,他们的first name和last name用下划线隔开,那么匹配名字带peng的,like语句写成这样:like ‘%/_peng‘ escape ‘/‘ 表示 / 后的字符需要转义,这个用于指示位置的字符可以任取。
如果不加通配符,就是精确匹配。
同where一样,like也是不区分大小写的,如需区分like后加上binary。
UNION操作符
假如每个班学生的信息单独是一张表,一次查看多个班学生的信息,可以用union。union用于连接多个SELECT语句的结果组合到一个结果集合中。每个select的结果需要有相同的列。语法:
SELECT t1 FROM t1 UNION SELECT 列名称 FROM t2 ORDER BY 列名称;
union默认会去除重复元素,若希望保留重复数据,union后加上all关键词。
union两个表的列名可以不同,但数据类型必须相同,union结果集中的列名总是等于union中第一个 select 语句中的列名。
NULL处理
null代表着空,如果某条记录的某列为null,想匹配含null的记录,很自然会想到 where listname = NULL;但这个语法是错误的,null很特殊,因此mysql也提供了特殊的运算符针对null。
IS NULL:筛选该列为null的记录,如 where list1 is null;
IS NOT NULL:筛选不是null的记录。
NULL和空值
NULL表示不存在,空值即‘‘,两者不一样。空值可以用运算符<>=比较,而NULL用上述运算符比较。count()会统计空值,不会统计NULL。