比较 EG:查询 PXSCJ数据库XSB表中姓 EG:查询 PXSCJ数据库XSB表中姓 “王”且全名为3个汉字的学生的情 “王”且全名为3个汉字的学生的 况 情况 SELECT XSB. SELECT XSB N FROM XSB FROM XSB WHERE XSB Sname LIKE WHERE XSB Sname LIKE'王 and len( Sname)=3 结果 结果消息 sno sname ssex sage sdept sno sname ssex sage sdept 200158王民生男2215 20051507王芳女19s 20051509王小明男19s 220051508王民生男221s 320051509王小明男191s 16
16 EG:查询PXSCJ数据库XSB表中姓 “王”且全名为3个汉字的学生的 情况。 SELECT XSB.* FROM XSB WHERE XSB.Sname LIKE '王 %‘ and len(Sname)=3;; 比较: EG:查询PXSCJ数据库XSB表中姓 “王”且全名为3个汉字的学生的情 况。 SELECT XSB.* FROM XSB WHERE XSB.Sname LIKE '王_ _';
3、范围比较 expression[NOT] BETWEEN expression AND expression/*指定范围* xpression I NOT TIN(subquery expression [,n]) /*IN子句* EG:查询 PXSCJ数据库XSB表中不在1989年出生的学生的情况。 SELECT XSB FROM XSB WhERE XSB Sdate NOT BETWEEN 1989-1-1'AND1989-12-31 EG:查询XSB表中专业为“计算机”、“通信工程”或“无线电”的学生情 况。 SELECT XSB. FROM XSB WHERE XSB. Major IN(计算机通信工程无线电")
17 3、范围比较 EG:查询PXSCJ数据库XSB表中不在1989年出生的学生的情况。 SELECT XSB.* FROM XSB WHERE XSB.Sdate NOT BETWEEN '1989-1-1' AND '1989-12-31'; EG:查询XSB表中专业为“计算机”、“通信工程”或“无线电”的学生情 况。 SELECT XSB.* FROM XSB WHERE XSB.Major IN('计算机' , '通信工程' , '无线电'); | expression [ NOT ] BETWEEN expression AND expression /*指定范围*/ expression [ NOT ] IN ( subquery | expression [ ,...n ] ) /*IN 子句*/
4、空值比较 expression Is[NOT]NULL/*是否空值判断* 不使用NOT时,若表达式 expression的值为空值,则返回TRUE,否则返回 FALSE;使用NOT时,结果相反。 EG:查询 PXSCJ数据库XSB表中总学分尚不定的学生情况。 SELECT XSB FROM XSB WHERE XSB. Tcredit IS NULL
18 4、空值比较 不使用NOT时,若表达式expression的值为空值,则返回TRUE,否则返回 FALSE;使用NOT时,结果相反。 EG:查询PXSCJ数据库XSB表中总学分尚不定的学生情况。 SELECT XSB.* FROM XSB WHERE XSB.Tcredit IS NULL; | expression IS [ NOT ] NULL /*是否空值判断*/
5、子查询 子查询除了可以用在 SELECT语句中,也可以用在Ⅰ NSERT、 UPDATE:和 DELETE语句中。通常与IN、 EXIST谓词及比较运算符结合使用。 (1)IN子查询 I expression NOT]iN( subquery /*ⅠN子句* 用于进行一个给定值是否在子查询结果集中的判断。当表达式 expression与子 查询 subquery的结果表中的某个值相等时,N谓词返回TRUE,否则返回 FALSE;使用了NOT,则相反 EG:查询选修了课程号为206的课程的学生基本情况 SELECT XSB.* FROM XSB WHERE XSB. StU Id in 系统先执行子查询,产生 (SELECT CJB. Stu ID FROM CJB 一个结果表,再执行查询。 WHERE CJB. C ID=206) 19
19 5、子查询 子查询除了可以用在SELECT语句中,也可以用在INSERT、UPDATE和 DELETE语句中。通常与IN、EXIST谓词及比较运算符结合使用。 (1)IN子查询 | expression [ NOT ] IN ( subquery ) /*IN子句*/ 用于进行一个给定值是否在子查询结果集中的判断。当表达式expression与子 查询subquery的结果表中的某个值相等时,IN谓词返回TRUE,否则返回 FALSE;使用了NOT,则相反。 EG:查询选修了课程号为206的课程的学生基本情况。 SELECT XSB.* FROM XSB WHERE XSB.Stu_ID IN (SELECT CJB.Stu_ID FROM CJB WHERE CJB.C_ID='206'); 系统先执行子查询,产生 一个结果表,再执行查询
EG:查询未选修离散数学的学生情况。 SELECT XSB FROM XSB WHERE XSB. StU Id not in SELECT CJB. Stu Id FROM CJB WHERE CJB. C ID IN SELECT KCB. C ID FROM KCB WHERE KCB Cname离散数学 );
20 EG:查询未选修离散数学的学生情况。 SELECT XSB.* FROM XSB WHERE XSB.Stu_ID NOT IN ( SELECT CJB.Stu_ID FROM CJB WHERE CJB.C_ID IN ( SELECT KCB.C_ID FROM KCB WHERE KCB.Cname='离散数学' ) );