资源简介 (共16张PPT)4.5 子查询202X提纲提纲什么是子查询IN子查询(NOT IN 子查询)比较子查询EXISTS子查询(NOT EXISTS 子查询)任务描述1.IN子查询查询学号为“18011101”的学生所选修的课程号和课程名。2.比较子查询1)查询选修表中成绩最高的学生的学号。(ALL关键字)2)查询选修表中选修了课程编号为“0102”,但成绩不是最低的学生的学号。(ANY关键字)3.EXISTS子查询查询从来没有被选修过的课程号及课程名。SELECT * FROM StudyWHERE Score>( SELECT Score FROM Study where SID =‘18011101’ and CID=‘0102’)子查询子查询:在查询条件中,可以使用另一个查询的结果作为条件的一部分,使用括号括起来作为查询条件一部分的查询称为子查询,外面的查询称为父查询。子查询在WHERE语句中的一般用法:SELECT … FROM 表1 WHERE 字段1 运算符 (子查询)子查询可以和UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句将子查询和比较运算符联合使用时,必须保证子查询返回的值不能多于一个任务准备IN子查询用于判断一个给定值是否在子查询的结果集中,格式为:Expression [ NOT ] IN ( subquery )任务准备SELECT * FROM StudyWHERE Score>( SELECT Score FROM Study where SID =‘18011101’ and CID=‘0102’)比较子查询: 父查询表达式的值与子查询的结果进行比较运算。格式一般为:… 比较运算符 [ ALL | SOME | ANY ] ( 子查询 )比较子查询任务准备数据库的存在检测(Exists子查询应用)IF EXISTS(SELECT * FROM sysDatabasesWHERE name=’DB_CRM1’)DROP DATABASE DB_CRM1CREATE DATABASE DB_CRM1…….—建库代码略EXISTS子查询。带EXISTS的子查询不返回任何记录,只产生逻辑值TRUE或者FALSE,它的作用是测试子查询返回的行是否存在。任务准备EXISTS (子查询)EXISTS子查询的语法:如果子查询的结果非空,即记录条数至少有1条,则EXISTS (子查询)将返回真(true),否则返回假(false)EXISTS也可以作为WHERE 语句的子查询,但一般都能用IN子查询替换SELECT … FROM 表名WHERE EXISTS (子查询)任务准备1. 查询学号为“18011101”的学生所选修的课程号和课程名任务演示SELECT CID,CNameFROM Course WHERE CID IN(SELECT CID FROM Study WHERE SID='18011101')IN:用于将原表中的列与返回的子查询的结果集进行比较。1. 查询选修表中成绩最高的学生的学号(ALL 关键字)任务演示SELECT SIDFROM Study WHERE Score>=ALL (SELECT Score FROM Study)提示:相比较的数据类型必须是一样的。1. 查询选修表中成绩最高的学生的学号(ANY 关键字)任务演示SELECT SIDFROM Study WHERE CID='0102' AND Score>ANY (SELECT Score FROM Study)思考:将ANY换成SOME结果会怎样?1. 查询从来没有被选修过的课程号及课程名(EXISTS子查询)任务演示SELECT CID,CNameFROM CourseWHERE NOT EXISTS(SELECT * FROM Study WHERE Course.CID=Study.CID)提示:EXISTS只返回TRUE或者FALSE。代码注释:NOT:表示取反。提示:EXISTS只返回TRUE或者FALSE。代码注释:NOT:表示取反。1.关系运算与查询语句关系运算:选择、投影及连接运算。SELECT语句:SELECT-FROM-WHERE结构。模块小结模块小结2.数据库查询简单查询:对数据投影、选择、排序等进行单表查询。01统计查询:聚合函数使用、分组统计等查询。02连接查询:谓词连接、内连接、外连接、自连接等查询。03子查询:在查询条件中,可以使用另一个查询的结果作为条件的一部分。04THANKS感谢观看 展开更多...... 收起↑ 资源预览