解释 DBMS 中的嵌套查询
dbmsdatabasebig data analytics更新于 2026/1/17 21:37:17
嵌套查询是指在查询中嵌入另一个查询的查询。嵌入的查询称为子查询。
子查询通常出现在查询的 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 | Name | classID | Marks |
|---|---|---|---|
| 1 | Pinky | 3 | 2.4 |
| 2 | Bob | 3 | 1.44 |
| 3 | Jam | 1 | 3.24 |
| 4 | Lucky | 2 | 2.67 |
| 5 | Ram | 2 | 4.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 | Name | Subject | classID | Salary |
|---|---|---|---|---|
| 1 | Bhanu | Computer | 3 | 5000 |
| 2 | Rekha | Science | 1 | 5000 |
| 3 | Siri | Social | NULL | 4500 |
| 4 | Kittu | Maths | 2 | 5500 |
Class 表
class 表创建如下 −
示例
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 | Grade | teacherID | No.ofstudents |
|---|---|---|---|
| 1 | 8 | 2 | 20 |
| 2 | 9 | 3 | 40 |
| 3 | 10 | 1 | 38 |
现在我们来处理嵌套查询
示例 1
Select AVG(noofstudents) from class where teacherID IN(Select id from teacherWhere 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

