第三节 查 询 (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)
(2) 确定范围
使用谓词 BETWEEN … AND …
NOT BETWEEN … AND …
[例10] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
[例11] 查询年龄不在20~23岁之间的学生姓名、系别和年龄。
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
(3) 确定集合:使用谓词 IN <值表>, NOT IN <值表>。
<值表>:用逗号分隔的一组取值。
[例12]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' );
[例13]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN ( 'IS','MA','CS' );
(4) 字符串匹配:[NOT] LIKE ‘<匹配串>’ [ESCAPE ‘ <换码字符>’]。
<匹配串>:指定匹配模板
匹配模板:固定字符串或含通配符的字符串。当匹配模板为固定字符串时,可以用 = 运算符取代 LIKE
谓词。用 != 或 < >运算符取代 NOT LIKE 谓词,通配符:
% (百分号) 代表任意长度(长度可以为0)的字符串。
例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串。
_ (下横线) 代表任意单个字符。
例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串。
ESCAPE 短语:当用户要查询的字符串本身就含有 % 或 _ 时,要使用ESCAPE '<换码字符>' 短语对通
配符进行转义。
1) 匹配模板为固定字符串
[例14] 查询学号为95001的学生的详细情况。
SELECT *
FROM Student
WHERE Sno LIKE '95001';
等价于:
SELECT *
FROM Student
WHERE Sno = '95001';
|