《数据库系统概论》
数据查询之嵌套查询
例题1:在sales表中查找出销售金额最高的订单(订单号,销售金额,订购日期)。
注释:相对基础的嵌套查询,属于不相关子查询
例题2: 查找购买了“数据库系统概论”的客户信息(客户名称,收件人,电话)。
注释:需要运用多重嵌套来查询结果,若涉及表的连接需注意表与表之间的联系,以免查询结果错误;需要明确的是,虽然SQL语言允许多重的嵌套查询,但子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序;
例题3:查询订购的产品至少包含了订单102893中所订购产品的订单。
例题4:找出至少选修了“200515004”号同学所选修课程的学生学号。
例题5:找出被所有同学选修了的课程号。
注释:带有EXISTS的子查询;EXISTS代表存在量词,带有EXISTS的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”,所以我们在进行查询操作是常常用*表示代表目标列表达式,给出列名也并无实际意义;与之相对应的就是NOT EXISTS代表不存在的意思,用法相同,含义相反;需要注意的是,在SQL中没有全称量词,但是我们可以通过离散数学的知识将题目的意思换成等价的用存在量词的表达形式从而用EXISTS或NOT EXISTS来查询,同样的例题3和4中存在着蕴含关系的逻辑运算,SQL中也不存在,同样的可以用为此演算将其转换。例如:例题4找出至少选修了“200515004”号同学所选修课程的学生学号。就可以将其翻译成:查找同学,其条件是:不存在一门课程学号200515004的同学选修了而这名同学没有选修;这样就能够查找到满足条件的结果。