文档详情

chp3-2-数据库系统概论-关系数据库标准语言SQL.ppt

发布:2019-08-12约1.16万字共52页下载文档
文本预览下载声明
* An Introduction to Database System * 带有IN谓词的子查询(续) [例40-1]用连接查询实现[例40] SELECT Student.Sno, Sname FROM Student, SC, Courses WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno AND Course.Cname=‘信息系统’; * An Introduction to Database System * 二、带有比较运算符的子查询 当能确切知道内层查询返回单值时,可用比较运算符(,,=,=,=,!=或 )。 与ANY或ALL谓词配合使用 * An Introduction to Database System * 带有比较运算符的子查询(续) [例39-3]例:假设一个学生只可能在一个系学习,并且必须属于一个系,则[例39]可以用 = 代替IN : SELECT Sno,Sname,Sdept FROM Students WHERE Sdept = ( SELECT Sdept FROM Students WHERE Sname= ‘ 刘晨 ’); * An Introduction to Database System * 带有比较运算符的子查询(续) 注意:子查询一定要跟在比较符之后 错误的例子: SELECT Sno,Sname,Sdept FROM Students WHERE ( SELECT Sdept FROM Students WHERE Sname= ‘ 刘晨 ’ ) = Sdept; * An Introduction to Database System * 三、带有ANY(SOME)或ALL谓词的子查询 谓词语义 ANY:任意一个值 ALL:所有值 * An Introduction to Database System * 带有ANY(SOME)或ALL谓词的子查询(续) 需要配合使用比较运算符 ANY 大于子查询结果中的某个值 ALL 大于子查询结果中的所有值 ANY 小于子查询结果中的某个值 ALL 小于子查询结果中的所有值 = ANY 大于等于子查询结果中的某个值 = ALL 大于等于子查询结果中的所有值 = ANY 小于等于子查询结果中的某个值 = ALL 小于等于子查询结果中的所有值 = ANY 等于子查询结果中的某个值 =ALL 等于子查询结果中的所有值(通常没有实际意义) !=(或)ANY 不等于子查询结果中的某个值 !=(或)ALL 不等于子查询结果中的任何一个值 * An Introduction to Database System * [例42] 查询其他系中比计算机科学系任意一个(其中某一个)学生年龄小的学生姓名和年龄 SELECT Sname,Sage FROM Students WHERE Sage ANY (SELECT Sage FROM Students WHERE Sdept= CS ) AND Sdept CS ; /* 注意这是父查询块中的条件 */ 带有ANY(SOME)或ALL谓词的子查询(续) * An Introduction to Database System * 结果 Sname Sage 王敏 18 张立 19 执行过程 1.首先处理子查询,找出CS系中所有学生的年龄,构成一个集合(20,19) 2. 处理父查询,找所有不是CS系且年龄小于 20 或 19的学生 带有ANY(SOME)或ALL谓词的子查询(续) * An Introduction to Database System * ANY和ALL谓词有时可以
显示全部
相似文档