【常用查询条件】
查询满足指定条件的元组一般通过 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 系的学生学号、姓名、所属系