文档详情

关系数据库标准语言SQL(第2部分).ppt

发布:2017-06-11约2.01万字共97页下载文档
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * An Introduction to Database System 条件表达式格式 (3) (值1[,值2 ] …) 属性列名 [NOT] IN (SELECT语句) An Introduction to Database System 条件表达式格式 (4) 属性列名 [NOT] LIKE 匹配串 (5) 属性列名 IS [NOT] NULL (6) [NOT] EXISTS (SELECT语句) An Introduction to Database System 条件表达式格式 (7) AND AND 条件表达式 条件表达式 条件表达 … OR OR * * * * * * * * * * * * * * * * * * * * * * * * * * * * * An Introduction to Database System 带有EXISTS谓词的子查询(续) [例42] 查询没有选修1号课程的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno=1); 此例用连接运算难于实现 An Introduction to Database System 带有EXISTS谓词的子查询(续) 3. 不同形式的查询间的替换 一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换 所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换。 An Introduction to Database System 带有EXISTS谓词的子查询(续) 例:[例37]查询与“刘晨”在同一个系学习的学生。可以用带EXISTS谓词的子查询替换: SELECT Sno,Sname,Sdept FROM Student S1 WHERE EXISTS   (SELECT * FROM Student S2 WHERE S2.Sdept = S1.Sdept AND S2.Sname = ‘ 刘晨 ’); An Introduction to Database System 带有EXISTS谓词的子查询(续) 5.用EXISTS/NOT EXISTS实现全称量词(难点) SQL语言中没有全称量词? (For all) 可以把带有全称量词的谓词转换为等价的带有存在量词的谓词: (?x)P ≡ ? (? x(? P)) An Introduction to Database System 带有EXISTS谓词的子查询(续) [例43] 查询选修了全部课程的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM Course WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno= Student.Sno AND Cno= Course.Cno); An Introduction to Database System 带有EXISTS谓词的子查询(续) 6. 用EXISTS/NOT EXISTS实现逻辑蕴函(难点) SQL语言中没有蕴函(Implication)逻辑运算 可以利用谓词演算将逻辑蕴函谓词等价转换为
显示全部
相似文档