【常用查询条件】
查询满足指定条件的元组一般通过 WHERE 子句来实现,常用的查询条件如下表

【比较大小】
用于进行比较的运算符一般包括等于 =、不等于 != 或 <>、大于 >、小于<、大于等于>=、小于等于<=、不大于!>、不小于!<
例如,查询 CS 系全体学生的名单

【确定范围】
谓词 BETWEEN...AND... 与 NOT BETWEEN...AND... 用于查找属性值在/不在指定范围内的元组,其中 BETWEEN 后是范围的下限(低值),AND 后是范围的上限(高值)
例如,查询成绩在 80 到 90 间的学生学号

【指定集合】
谓词 IN 和 NOT IN用于查询属性值属于/不属于指定集合的元组
例如,查询 CS、IS 系的学生学号、姓名、所属系

【字符匹配】
谓词 LIKE 和 NOT LIKE 用于进行字符串匹配,其一般语法格式如下
1 | [NOT] LIKE '<匹配串>' [ESCAPE '<换码字符>'] |
其含义是查找指定属性列值与 <匹配串> 相匹配的元组,当加上 NOT 短语后,则查找不匹配的元组
<匹配串> 可以是一个完整的字符串,也可以含有通配符百分号 % 与下划线 _
% 代表任意长度的字符串
例如,查询所有姓张的学生的学号、姓名、性别

_ 代表任意单个字符
例如,查询名字中第二个字为四的学生的学号、姓名、性别

ESCAPE 短语用于换码字符,这样使得匹配串中换码字符后的通配符不再具有通配符含义,转义为普通的 %、_ 字符,
例如,查询 DB_Design 课程的课程号、学分
1 | SELECT Cno, Ccredit |
一般默认换码字符为反斜杠 \,此时无需使用 ESCAPE 短语
1 | SELECT Cno, Ccredit |
【涉及空值的查询】
当查询涉及到空值 NULL 时,一般用谓词 IS NULL 或 IS NOT NULL 来判断是否为空值(不能用 =、!=来判断是否为空值)
例如,查询不需先修课的课程的课程号、课程名

【多重条件查询】
逻辑运算符 AND 和 OR 用来连接多个查询条件,需要注意的是AND 的优先级高于 OR 的优先级,但可以使用圆括号 () 来改变优先级
例如,查询 CS 系年龄在 22 岁下的学生的学号、姓名

实际上,对于使用谓词 IN 的指定集合的查询,其本质是多个 OR 的缩写
例如,查询 CS、IS 系的学生学号、姓名、所属系
