資料庫管理系統 (DBMS) 中的巢狀查詢詳解


一個巢狀查詢是指在其內部巢狀另一個查詢的查詢。巢狀的查詢稱為子查詢。

子查詢通常出現在查詢的WHERE 子句中。有時它也可能出現在FROM子句或HAVING 子句中。

示例

讓我們透過一個例子來學習巢狀查詢。

查詢regno=103的員工姓名

查詢如下:

select E.ename from employee E where E.eid IN (select S.eid from salary S where S.regno=103);

學生表

學生表建立如下:

create table student(id number(10), name varchar2(20),classID number(10), marks varchar2(20));
Insert into student values(1,'pinky',3,2.4);
Insert into student values(2,'bob',3,1.44);
Insert into student values(3,'Jam',1,3.24);
Insert into student values(4,'lucky',2,2.67);
Insert into student values(5,'ram',2,4.56);
select * from student;

輸出

您將獲得以下輸出:

ID姓名班級ID分數
1Pinky32.4
2Bob31.44
3Jam13.24
4Lucky22.67
5Ram24.56

教師表

教師表建立如下:

示例

Create table teacher(id number(10), name varchar(20), subject varchar2(10), classID number(10), salary number(30));
Insert into teacher values(1,’bhanu’,’computer’,3,5000);
Insert into teacher values(2,'rekha','science',1,5000);
Insert into teacher values(3,'siri','social',NULL,4500);
Insert into teacher values(4,'kittu','mathsr',2,5500);
select * from teacher;

輸出

您將獲得以下輸出:

ID姓名科目班級ID薪資
1Bhanu計算機35000
2Rekha科學15000
3Siri社會NULL4500
4Kittu數學25500

班級表

班級表建立如下:

示例

Create table class(id number(10), grade number(10), teacherID number(10), noofstudents number(10));
insert into class values(1,8,2,20);
insert into class values(2,9,3,40);
insert into class values(3,10,1,38);
select * from class;

輸出

您將獲得以下輸出:

ID年級教師ID學生人數
18220
29340
310138

現在讓我們來處理巢狀查詢

示例1

Select AVG(noofstudents) from class where teacherID IN(
Select id from teacher
Where subject=’science OR subject=’maths’);

輸出

您將獲得以下輸出:

20.0

示例2

SELECT * FROM student
WHERE classID = (
   SELECT id
   FROM class
   WHERE noofstudents = (
      SELECT MAX(noofstudents)
      FROM class));

輸出

您將獲得以下輸出:

4|lucky |2|2.67
5|ram   |2|4.56

更新於:2023年9月13日

37K+ 次瀏覽

開啟你的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.