-
1 基础知识
-
2 任务挑战
条件查询
1 where子句
WHERE子句必须紧跟FROM子句之后,在WHERE子句中,使用一个条件从FROM子句的中间结果中选取行。其基本格式为:
| 操 作 符 | 描 述 |
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| between | 在某个范围内 |
| like | 搜索某种模式 |
2 比较运算符
比较运算符用于比较(除TEXT和BLOB类型外) 两个表达式值,MySQL支持的比较运算符有:=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<=>(相等或都等于空)、<>(不等于)、!=(不等于)。
当两个表达式值均不为空值(NULL)时,除了“<=>”运算符,其他比较运算返回逻辑值TRUE(真)或FALSE(假);而当两个表达式值中有一个为空值或都为空值时,将返回UNKNOWN。
【案例】
a 查询Bookstore数据库Book表中书名为“网页程序设计”的记录。
SELECT 书名,单价 FROM Book
WHERE 书名='网页程序设计';
b 查询Book表中单价大于30的图书情况。
SELECT * FROM Book
WHERE 单价>30;
MySQL有一个特殊的等于运算符“<=>”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。没有UNKNOWN的情况。
c 查询Sell表中还未收货的订单情况。
SELECT 订单号,是否收货 FROM Sell
WHERE 是否收货<=>NULL;
3 逻辑运算
通过逻辑运算符(AND、OR、XOR和NOT)组成更为复杂的查询条件。逻辑运算操作的结果是“1”或“0”,分别表示“true”或“false”。
符号1 | 符号2 | 说明 | 示例 | 说明 |
not | ! | 非运算 | !x | 如果x是"true",那么示例的结果是"false"; 如果x是"false",那么示例的结果是"true"。 |
or | || | 或运算 | x || y | 如果x或y任一是"true",那么示例的结果是"true",否则示例的结果是"false"。 |
and | && | 与运算 | x && y | 如果x和y都是"True",那么示例结果是"true",否则示例的结果是"false"。 |
xor | ^ | 异或运算 | x ^y | 如果x和y不相同,那么示例结果是"true",否则示例的结果是"false"。 |
4 模式匹配(like运算)
LIKE运算符用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar、text、datetime等类型的数据,返回逻辑值TRUE或FALSE。
使用LIKE进行模式匹配时,常使用特殊符号_和%,可进行模糊查询。“%”代表0个或多个字符,“_”代表单个字符。由于MySQL默认不区分大小写,要区分大小写时需要更换字符集的校对规则。
【例】查询Members表中姓“张”的会员的身份证号、姓名及注册时间。
SELECT 身份证号,会员姓名, 注册时间 FROM Members
WHERE 会员姓名 LIKE '张%';
【例】查询Book表中图书编号倒数第二位为T的图书的图书编号和书名。
SELECT 图书编号, 书名 FROM Book
WHERE 图书编号LIKE '%T_';
例[5】查询Book表中书名中包含下画线的图书。
SELECT 图书编号,书名 FROM Book
WHERE 书名 LIKE'%#_%' ESCAPE '#';
5 范围比较
用于范围比较的关键字有两个:BETWEEN和IN。
当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为:
expression [ NOT ] BETWEEN expression1 AND expression2
当不使用NOT时,若表达式expression的值在表达式expression1与expression2之间(包括这两个值),则返回TRUE,否则返回FALSE;使用NOT时,返回值刚好相反。
注意:expression1的值不能大于expression2的值。
【例】 查询Book表中2010年出版的图书的情况。
SELECT * FROM Book
WHERE 出版时间 BETWEEN '2010-1-1' AND '2010-12-31

