子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中。

子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据。

子查询可以在SELECT,INSERT,UPDATE使用,而且随着运算符如DELETE语句 =, <, >, >=, <=, IN, BETWEEN 等.

这里有一些规则,子查询必须遵循:

  • 子查询必须被圆括号括起来。

  • 子查询只能在有一列的SELECT子句中,除非多个列中的子查询,以比较其选定列主查询。

  • ORDER BY不能在子查询中使用,主查询可以使用ORDER BY。GROUP BY可以用来在子查询中如ORDER BY执行相同的功能。

  • 返回多于一个行子查询只能用于具有多个值运算符,如IN操作。

  • SELECT列表中不能包含到值计算到任何引用 BLOB, ARRAY, CLOB, 或NCLOB.

  • 子查询不能立即封闭在一组函数。

  • BETWEEN 操作符不能与子查询使用;然而,操作符BETWEEN可以在子查询中使用。

 

学习本节所需要的表:

CREATE TABLE TEACHER
(
    ID INT IDENTITY (1,1) PRIMARY KEY ,  --主键,自增长
    TNO INT NOT NULL, --教工号
    TNAME CHAR(10) NOT NULL, --教师姓名
    CNO INT NOT NULL, --课程号
    SAL INT, --工资
    DNAME CHAR(10) NOT NULL, --所在系
    TSEX CHAR(2) NOT NULL, --性别
    AGE INT NOT NULL --年龄
)
INSERT INTO dbo.TEACHER VALUES( 1,'王军',4,400,'数学','',32)
INSERT INTO dbo.TEACHER VALUES( 2,'李彤',5,6600,'生物','',54)
INSERT INTO dbo.TEACHER VALUES( 3,'王永军',1,1000,'计算机','',45)
INSERT INTO dbo.TEACHER VALUES( 4,'刘晓婧',2,8000,'计算机','',23)
INSERT INTO dbo.TEACHER VALUES( 5,'高维',8,6000,'电子工程','',54)
INSERT INTO dbo.TEACHER VALUES( 6,'李伟',7,230,'机械工程','',23)
INSERT INTO dbo.TEACHER VALUES( 7,'刘辉',3,0,'生物','',65)
INSERT INTO dbo.TEACHER VALUES( 8,'刘伟',9,500,'计算机','',23)
INSERT INTO dbo.TEACHER VALUES( 9,'刘静',12,0,'经济管理','',45)
INSERT INTO dbo.TEACHER VALUES( 10,'刘奕锴',13,70000,'计算机','',65)
INSERT INTO dbo.TEACHER VALUES( 11,'高维',14,70000,'经济管理','',61)

CREATE TABLE COURSE
(
    ID INT IDENTITY (1,1) PRIMARY KEY ,  --主键,自增长
    CNO INT NOT NULL, --课程号
    CNAME CHAR(30) NOT NULL, --课程名称
    CTIME INT NOT NULL, --学时
    SCOUNT INT NOT NULL, --容纳人数
    CTEST SMALLDATETIME NOT NULL, --考试时间
)
INSERT INTO dbo.COURSE VALUES( 4,'应用数学基础',48,120,'2006-7-10')
INSERT INTO dbo.COURSE VALUES( 5,'生物工程概论',32,80,'2006-7-8')
INSERT INTO dbo.COURSE VALUES( 1,'计算机软件基础',32,70,'2006-7-8')
INSERT INTO dbo.COURSE VALUES( 2,'计算机硬件基础',24,80,'2006-6-28')
INSERT INTO dbo.COURSE VALUES( 8,'模拟电路设计',28,90,'2006-7-10')
INSERT INTO dbo.COURSE VALUES( 7,'机械设计实践',48,68,'2006-7-14')
INSERT INTO dbo.COURSE VALUES( 3,'生物化学',32,40,'2006-7-2')
INSERT INTO dbo.COURSE VALUES( 9,'数据库设计',16,80,'2006-7-1')
INSERT INTO dbo.COURSE VALUES( 6,'设计理论',28,45,'2006-6-30')
INSERT INTO dbo.COURSE VALUES( 10,'计算机入门',25,150,'2006-6-29')
INSERT INTO dbo.COURSE VALUES( 11,'数字电路设计基础',30,125,'2006-6-20')
CREATE TABLE STUDENT
(
    ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
    SNO CHAR(4) NOT NULL,    --学号
    SNAME CHAR(10) NOT NULL, --姓名
    DNAME CHAR(10) NOT NULL, --系
    SSEX CHAR(2) NOT NULL,   --性别
    CNO INT ,                --课程号
    MARK DECIMAL(3,1),       --成绩
    TYPE CHAR(4)             --课程类型
)
INSERT INTO dbo.STUDENT VALUES('9701','刘建国','管理工程','',4,82.5,'必修')
INSERT INTO dbo.STUDENT VALUES('9701','刘建国','管理工程','',10,70,'选修')
INSERT INTO dbo.STUDENT VALUES('9701','刘建国','管理工程','',1,78.5,'选修')
INSERT INTO dbo.STUDENT VALUES('9702','李春','环境工程','',5,63,'必修')
INSERT INTO dbo.STUDENT VALUES('9702','李春','环境工程','',10,58,'选修')
INSERT INTO dbo.STUDENT VALUES('9703','王天','生物','',5,48.5,'必修')
INSERT INTO dbo.STUDENT VALUES('9703','王天','生物','',2,86,'选修')
INSERT INTO dbo.STUDENT VALUES('9704','李华','计算机','',4,76,'必修')
INSERT INTO dbo.STUDENT VALUES('9704','李华','计算机','',1,92,'必修')
INSERT INTO dbo.STUDENT VALUES('9704','李华','计算机','',2,89,'必修')
INSERT INTO dbo.STUDENT VALUES('9704','李华','计算机','',9,80,'必修')
INSERT INTO dbo.STUDENT VALUES('9704','李华','计算机','',8,70,'选修')
INSERT INTO dbo.STUDENT VALUES('9705','孙庆','电子工程','',8,79,'必修')
INSERT INTO dbo.STUDENT VALUES('9705','孙庆','电子工程','',1,59,'必修')
INSERT INTO dbo.STUDENT VALUES('9705','孙庆','电子工程','',11,52,'必修')
INSERT INTO dbo.STUDENT VALUES('9705','孙庆','电子工程','',6,68,'必修')
INSERT INTO dbo.STUDENT VALUES('9706','高伟','机械工程','',13,93,'必修')
INSERT INTO dbo.STUDENT VALUES('9706','高伟','机械工程','',12,88.5,'必修')
INSERT INTO dbo.STUDENT VALUES('9706','高伟','机械工程','',1,78,'选修')
INSERT INTO dbo.STUDENT VALUES('9706','高伟','机械工程','',10,76,'选修')

数据表
表数据

相关文章:

  • 2021-06-15
  • 2021-10-29
  • 2021-06-01
  • 2021-07-13
  • 2021-10-13
  • 2021-09-04
猜你喜欢
  • 2022-12-23
  • 2021-11-24
  • 2022-12-23
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2021-06-19
相关资源
相似解决方案