一、where
WHERE 列名 <比较运算符> 常量或列名
常用的比较运算符:
运算符 | 含义 |
---|---|
=, >,<,>=,<=, !=,> | 比较大小 |
AND, OR, NOT | 多重条件 |
IN | 确定集合 |
BETWEEN AND | 确定范围 |
IS NULL | 空值 |
LIKE | 字符匹配 |
1.比较大小
优先级:NOT、AND、OR
可以用括号改变优先级
[例8-18]查询成绩高于90分的学生学号、课号和成绩。
SELECT*
FROM sC
WHERE Grade>90;
[例8-19]查询成绩在[70.80]的学生的学号和成绩。
SELECT Sno,Grade
FROM sC
WHERE Grade>=70 and Grade<=80;
[例]查询选修C1或C2号且成绩大于等于80分的学号、课号和成绩。
SELECT Sno,Cno,gradeFROM sc
WHERE (Cno='C1' OR Cno='C2') AND grade>=80;
#或者
WHERE Cno='C1' AND grade>=80
OR Cno='C2'AND grade>=80
2.用IN查询
IN和NOT IN
[例8-20]查询选C1、C2或C3课的学号、课号。
SELECT Sno,Cno
FROM sc
WHERE Cno IN('C1, 'C2', 'C3') ;
3.确定范围 (between and)
[例8-21]查询成绩在75~80分间(包括75和80)
的学生学号、课号和成绩。
SELECT Sno,Cno,Grade
FROM Sc
WHERE Grade BETWEEN 75 AND 80;
或者不在此范围 NOT BETWEEN 75 AND 80
4.空值的查询(IS NULL 或 IS NOT NULL)
使用谓词 IS NULL 或 IS NOT NULL
注意“IS NULL”不能用“= NULL”代替。
[例8-24]查询选课后没参加考试学生的学号和程号。
SELECT Sno,Cno
FROM sc
WHERE Grade IS NULL;
5.字符串匹配
格式:
属性名 LIKE ‘<匹配串>’
属性名 NOT LIKE ‘<匹配串>‘
<匹配串> = 字符常量 + 通配符两种通配符:
%:代表任意长度
(长度可以为0)的字符串
_ ∶代表任意单个
字符
[例]查询S表中姓李且姓名是三个字的学生信息。
SELECT *
FROM Stu
WHERE Sname LIKE '李__';
[例8-26]查询学生表Stu所有姓李学生的信息。
SELECT *
FROM Stu
WHERESname LIKE '李%';
[补充]查询姓名中有“梅”字的学生学号和姓名。
SELECT Sno,Sname
FROM Stu
WHERE Sname LIKE '%梅%';
[补充]查询姓名中第2个字是“梅”的学生学号和姓名
SELECT Sno,Sname
FROM Stu
WHERE Sname LIKE '_梅%';
6.定义换码字符
ESCAPE’<换码字符>’
如:ESCAPE ‘/’
[补充]查询课程名以’DB_'开头的课号、课名和学分。
SELECT Cno, Cname, Ccredit
FROM C
WHERE Cname LIKE 'DB/_%'
ESCAPE '/';