8.4.3 条件查询

一、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 '/';

猜你喜欢

转载自blog.csdn.net/qq_25887493/article/details/124081436
今日推荐