数据库第六周实验——嵌套查询——例题实现

嵌套查询

一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
上层的查询块称为外层查询或父查询
下层查询块称为内层查询或子查询

注意:子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序。

一.带有IN谓词的子查询

不相关子查询:子查询的查询条件不依赖于父查询,求解方法:由里向外,即先执行的子查询,子查询的结果用于建立其父查询的查询条件。
相关子查询:子查询的查询条件依赖于父查询,求解方法:由外向里

【例3.55 3.56】

--查询与“刘晨”在同一个系的学生

--方法一:
--1.确定“刘晨”所在系名
SELECT Sdept
FROM Student
WHERE Sname='刘晨';
--2.查找所有在CS系学习的学生
SELECT Sno,Sname,Sdept 
FROM Student
WHERE Sdept='CS';

--方法二:嵌套
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
	  (
	    SELECT Sdept
	    FROM Student
	    WHERE Sname='刘晨'
	   );

--方法三:带有比较运算符的子查询
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept =
	  (
	    SELECT Sdept
	    FROM Student
	    WHERE Sname='刘晨'
	   );

--方法四:带EXISTS谓词的子查询
SELECT Sno,Sname,Sdept
FROM Student S1
WHERE EXISTS
	(
		SELECT *
		FROM Student S2
		WHERE S2.Sdept=S1.Sdept AND S2.Sname='刘晨'
	);

--方法五:自身连接
SELECT S1.Sno,S1.Sname,S1.Sdept
FROM Student S1,
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值