数据库数据查询之嵌套查询与集合查询

数据库数据查询之嵌套查询与集合查询,第1张

1.返回一个值的子查询

2.返回一组值的子查询

1.返回一个值的子查询

(1)查询与刘伟职称相同的教师号、姓名和职称

(2)使用IN谓词查询讲授课程号为C1的教师姓名

(3)使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师姓名、工资和所在系

(4)使用EXISTS谓词查询没有讲授C1课程的教师姓名、所在系

(5)使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生学号

查询年龄不大于19岁或者是计算机系的学生

(1)查询年龄不大于19岁或者是计算机系的学生

嵌套查询与连接查询的区别如下:

1、意义上的差异

嵌套查询是包含一个或多个子查询或子查询的另一个术语的select语句。在外部查询中包含内部查询的另一个子查询是SQL语句的扩展。

连接查询是关系数据库中最重要的查询。在关系数据库管理系统中,数据之间的关系不需要确定表的建立时间,实体的所有信息通常都存储在表中。检索数据时,通过连接 *** 作查询存储在多个表中的不同实体的信息。

2、特征上的差异

嵌套查询的主要特点是sql允许从内到外进行多层嵌套分析,并将子查询的结果作为主查询的查询条件。

连接是关系数据库模型的主要特征。多表查询可以通过连接运算符实现。连接 *** 作给用户带来极大的灵活性,可以随时添加新的数据类型。

扩展资料:

连接查询分为:

1、等价联接:在联接条件中使用等号(=)运算符比较联接列的列值,并在查询结果中列出联接表中的所有列,包括重复列。

2、不等联接:在联接条件下使用比较运算符而不是等号运算符比较联接列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

3、自然联接:在联接条件中,使用等号(=)运算符比较联接列的列值,但它使用选择列表指示查询结果集中包含的列,并删除联接表中的重复列。

参考资料来源:

百度百科-嵌套查询

百度百科-连接查询

当由where子句指定的搜索条件指向另一张表时,就需要使用子查询或嵌套查询。

1 子查询

子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。

1.1语法规则:

- 子查询的select查询使用圆括号括起来

- 不能包括compute或for browse子句

- 如果同时指定top子句,则可能只包括order by子句

- 子查询最多嵌套32层,个别查询可能会不支持32层嵌套

- 任何可以使用表达式的地方都可以使用子查询,主要它返回的是单个值

- 如果某个表只出现在子查询中而不出现在外部查询中,那么该表中的列就无法包含在输出中

1.2 语法格式:

- where 查询表达式 [not] in(子查询)

- where 查询表达式 比较运算符 [any|all] (子查询)

- where [not] exists (子查询)

2 嵌套查询

嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。

嵌套查询中上层的查询块称为外侧查询或父查询,下层查询块称为内层查询或子查询。SQL语言允许多层嵌套,但是在子查询中不允许出现order by子句,order by子句只能用在最外层的查询中。

嵌套查询的处理方法是:先处理最内侧的子查询,然后一层一层地向上处理,直到最外层的查询块。

2.1 简单的嵌套查询

子查询的运算符含有=、<>、<、>、<=、>=

三个查询:

第一个:查询年纪>25的老师所教的学生

第二个:查询年纪>25的老师

第三个:验证查询到的学生信息

对比:当子查询中的分那会的结果不是一个时,父查询无法正常工作

2.2 带IN的嵌套查询

当子查询返回一系列值时,适合带IN的嵌套查询。

2.3 NOT IN

2.4 SOME

2.5 ANY

2.6 ALL

2.7 EXIST


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9963358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存