文档详情

查询语句与(连接,嵌套) .ppt

发布:2017-10-02约7.72千字共31页下载文档
文本预览下载声明
第二章 SQL SQL概述 SQL数据定义功能 SQL数据查询功能 SQL数据修改功能 SQL数据控制功能 嵌入式SQL 集合成员资格(Ⅰ) in 子查询 表达式 [not] in (子查询) 判断表达式的值是否在子查询的结果中。 示例 选修了C01号课程的学生的学号及姓名。 select SNO,SNAME from S where SNO in (select SNO from SC where CNO = C01 ) 集合成员资格( Ⅱ ) 查询与“刘晨”在同一个系学习的学生。 1、确定刘晨所在的系名 select Sdept from Student where Sname =刘晨 2、查找所有在IS系学习的学生 select Sno,Sname,Sdept from student where sdept= is 集合之间的比较(Ⅰ) some/any/all子查询 表达式 比较运算符? any (子查询) 表达式的值至少与子查询结果中的一个值相比满足比较运算符? 。 表达式 比较运算符? all (子查询) 表达式的值与子查询结果中的所有的值相比都满足比较运算符?。 集合之间的比较(Ⅱ) any 大于子查询结果中的某个值 all大于子查询结果中的所有值 any 小于子查询中的某个值 all小于子查询中的所有值 =any等于子查询中的某个值 =all等于子查询中的任意一个值 !=any不等于子查询中的某个值 !=all不等于子查询中的任意一个值 集合之间的比较( Ⅲ ) 查询其他系中比信息系某个学生年龄小的学生姓名年龄 等价于: 集合之间的比较( IV ) 查询其他系中比信息系中所有学生年龄都小的学生姓名,年龄 等价于: 集合之间的比较( V ) 示例 找出平均成绩最高的学生号。 集合之间的比较( VI ) 事实上,用集函数实现子查询通常比直接用ANY或者ALL查询效率要高 集合基数的测试(1) 测试集合是否为空 [not] exists (子查询) 判断子查询的结果集合中是否有任何元组存在。 列出选修了c01号课程的学生的学号及姓名。 select Sname from student where exists ( select * from sc where sno=student.sno and cno =C01) 集合基数的测试(4) 列出选修了001号和002号课程的学生的学号。 思考:查询选修了全部课程的学生姓名 列出至少选修了2003001号学生选修的所有课程的学生名。 select SNAME from Student as S where not exists (select CNO from COURSE where exists (select * from SC where SC.CNO = COURSE.CNO and SC.SNO =‘2003001’) and not exists (select * from SC where SC.CNO = COURSE.CNO and SC.SNO = S.SNO) ) 任意课程,001号学生选之,所求学生选之。 ? 不存在任何一门课程,001号学生选之,所求学生没有选之。 * * 连接查询-等值与非等值查询 若一个查询涉及两个以上的表,则称为连接查询。连接查询包括等值连接、自然连接、非等值连接、自身连接、外连接查询和符合条件连接查询。 一、等值与非等值查询 连接查询中用来连接两个表的条件称为连接条件或连接谓词,其一般格式为: [表名1.]列名 比较运算符 [表名2.]列名2 当连接运算符为=时,称为等值连接。使用其他运算符称为非等值连接。
显示全部
相似文档