1、模式匹配
1、我们在查询数据时,查询条件不确定,要使用到的就是模式匹配
MySQL提供标准的SQL模式匹配(like),以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式(regexp)
注:LIKE匹配可以使用特殊符号“”和“%”进行模糊查询,其中“”代表任意一个字符,“%”代表0个或者多个字符
eg(查询所有准考证号以0开头,以6结尾的考生准考证号和姓名):
select zkzh,name from student
where zkzh like “0%6”;
查询电话以“_”开头的考生姓名、电话
select name,phone from student
where phone like’KaTeX parse error: Expected group after '_' at position 1: _̲%' escape '’;
当要匹配的内容包含特殊字符时,可以使用escape定义转义字符。如本例,escape定义了“ ” 为 转 义 字 符 , 那 么 l i k e 语 句 里 “ ”为转义字符,那么like语句里“ ”为转义字符,那么like语句里“”后面的“_”将作为普通下划线使用。因为没有电话包含符号,所以查询结果为空
select name,phone from student where phone like ‘KaTeX parse error: Expected group after '_' at position 1: _̲%' escape '’ or phone like ‘ %%' escape ' ’;
(上面的,正确)
select name,phone from student where phone like ‘KaTeX parse error: Expected group after '_' at position 1: _̲%' or'%%’ escape ‘$’;
(上面的,错误)
2、REGEXP匹配
正则表达式定义了一个字符串的规则,是定义复杂查询的一个强有力的工具。MySQL采用Henry Spencer的正则表达式实施,其目标是符合POSIX 1003.2。MySQL中使用REGEXP操作符来进行正则表达式匹配。REGEXP操作符不是SQL标准,但是具有强大的功能
eg(查询名字为两个字的学生姓名、性别,四个自己):
select name,sex from student
where name regexp ‘^.{4}$’;
范围比较主要使用BETWEEN和IN关键字。其中IN关键字还可以在子查询中使用
3、子查询
当一个查询是另一个查询的条件时,称之为子查询。子查询可以使用几个简单命令构造功能强大的复合命令。一个子查询会返回一个标量(单一值)、一个行、一个列或一个表(一行或多行及一列或多列)。子查询最常用于SELECT-SQL命令的WHERE子句中,是一个SELECT语句,它嵌套在一个 SELECT、SELECT…INTO 语句、INSERT…INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。本节主要讲解子查询在WHERE子句中的用法
>any 大于最小
>all 大于最大
<any 小于最大
<all 小于最小
=any 等于in
=all 错误
补充: