选择查询
选择查询用于选择行,选择查询通过WHERE子句实现,WHERE子句通过条件表达式给出查询条件,该子句必须紧跟FROM子句之后。
语法格式:
WHERE 条件
条件=:
<判定条件> [ 逻辑运算符 <判定条件> ]
<判定条件> =:
表达式 { = | < | <= | > | >= | <=> | <> | != }表达式 /*比较运算*/
|表达式[ NOT ] LIKE表达式 [ ESCAPE 'escape_character ' ] /*LIKE运算符*/
|表达式[ NOT ][ REGEXP | RLIKE ] 表达式 /*REGEXP运算符*/
|表达式[ NOT ] BETWEEN 表达式AND 表达式 /*指定范围*/
|表达式IS [ NOT ] NULL /*是否空值判断*/
|表达式[ NOT ] IN ( subquery |表达式[,…n] ) /*IN子句*/
|表达式{ = | < | <= | > | >= | <=> | <> | !=} { ALL | SOME | ANY } ( subquery ) /*比较子查询*/
| EXIST ( 子查询 ) /*EXIST子查询*/
说明:
(1)判定运算包括比较运算、模式匹配、指定范围、空值判断、子查询等。
(2)判定运算的结果为TRUE、FALSE或UNKNOWN。
(3)逻辑运算符包括.AND(与)、OR(或)、 NOT(非),逻辑运算符的使用是有优先级的,三者之中,NOT优先级最高,AND次之,OR优先级最低。
(4)条件表达式可以使用多个判定运算通过逻辑运算符成复杂的查询条件。
(5)字符串和日期必须用单引号括起来。
1.表达式比较
比较运算符用于比较两个表达式值,共有7个运算符:=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)、!=(不等于),其语法格式如下。
语法格式:
<表达式1> { = | < | <= | > | >= | <> | != } <表达式2>
课本例6.6
【例6.6】查询student表中专业为计算机或性别为女的学生。
mysql> SELECT *
-> FROM student
-> WHERE speciality='计算机' or ssex='女';
查询结果:
+----------+----------+-----+---------------+------------+-----+
| sno | sname | ssex | sbirthday | speciality | tc |
+----------+----------+-----+---------------+------------+-----+
| 191001 | 刘清泉 | 男 | 1998-06-21 | 计算机 | 52 |
| 191002 | 张慧玲 | 女 | 1999-11-07 | 计算机 | 50 |
| 191003 | 冯涛 | 男 | 1999-08-12 | 计算机 | 52 |
| 196001 | 董明霞 | 女 | 1999-05-02 | 通信 | 50 |
| 196002 | 李茜 | 女 | 1998-07-25 | 通信 | 48 |
+----------+----------+-----+---------------+------------+-----+
5 rows in set (0.05 sec)
2.指定范围
BETWEEN、NOT BETWEEN、IN是用于指定范围的三个关键字,用于查找字段值在(或不在)指定范围的行。
当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围。
语法格式:
<表达式> [ NOT ] BETWEEN <表达式1> AND <表达式2>
3.空值判断
判定一个表达式的值是否为空值时,使用IS NULL关键字。
语法格式:
<表达式> IS [ NOT ] NULL
使用LIKE关键字的字符串匹配查询
关键字LIKE用于进行字符串匹配。
语法格式:
<字符串表达式1> [ NOT ] LIKE <字符串表达式2> [ ESCAPE '<转义字符>' ]
在使用LIKE关键字时,<字符串表达式2>可以含有通配符,通配符有以下两种:
%:代表0或多个字符。
_:代表一个字符。
LIKE匹配中使用通配符的查询也称模糊查询。
使用正则表达式进行查询
在MySQL中,使用REGEXP关键字来匹配查询正则表达式。REGEXP是正则表达式(Regular Expression)的缩写,它的一个同义词是RLIKE。
语法格式:
match_表达式 [ NOT ][ REGEXP | RLIKE ] match_表达式
常用字符匹配选项如表