博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
子查询
阅读量:5296 次
发布时间:2019-06-14

本文共 1079 字,大约阅读时间需要 3 分钟。

一、子查询:select 语句可以嵌套在其它语句中的,比如selectinsertupdatedelete。这些被嵌套的select语句被称为子查询,可以这么说当一个查询依赖于另外一个查询结果时就可以使用子查询。子查询有2中类型,一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数; 另外一种是

返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表。

1、单子字查询:子查询的返回值必须只有一行记录,而且只能有一行列,这样的子查询称为标量子查询。标量子查询可以在select语句的列表中、表达式中、where语句中等很多场合。

2、列值子查询:于标量子查询不同的是,列值值查询返回的结果集是一个多行多列的值查询。这样的子查询又被称为表子查询,表子查询可以看作一个临时的表,表值查询可以用在select语句的from字句中、insert中、连接、in字句等很多场合。

3、集合运算符与子查询:标量子查询对子查询的要求非常高, 而很多情况下查询结果并不能做为标量子查询。 如果子查询是多行多列的表子查询, 那么可以将其看成一个临时的数据表使用, 而如果子查询是多行单列的表子查询,这样的子查询的结果集其实是一个集合,SQL 提供了对这样的集合进行操的运算符,包括 INANYALL 以及 EXISTS 等。

(1)、 IN 运算符

(2)、ANY 和 SOME 运算符:ANY 和 SOME 是同义词,所以下面介绍的时候只使用 ANY, SOME 的用法和功能和 ANY 一模一样。和 IN 运算符不同,ANY 必须和其他的比较运算符共同使用,而且必须将比较运算符放在 ANY 关键字之前,所比较的值需要匹配子查询中的任意一个值,这也就是 ANY 在英文中所表示的意义。

(3)、ALL 运算符:ALL 在英文中的意思是 “所有” , ALL 运算符要求比较的值需要匹配子查询中的所有值。ALL 运算符同样不能单独使用,必须和比较运算符共同使用。

(4)、EXISTS 运算符:和 INANYALL 等运算符不同,EXISTS 运算符是单目运算符,它不与列匹配,因此它也不要求待匹配的集合是单列的。EXISTS 运算符用来检查每一行是否匹配子查询,可以认为 EXISTS 就是用来测试子查询的结果是否为空,如果结果集为空则匹配结果为 false,否则匹配结果为 true。 

转载于:https://www.cnblogs.com/Andyabc/p/3374468.html

你可能感兴趣的文章
Swift的高级分享 - Swift中的逻辑控制器
查看>>
https通讯流程
查看>>
Swagger简单介绍
查看>>
C# 连接SQLServer数据库自动生成model类代码
查看>>
关于数据库分布式架构的一些想法。
查看>>
大白话讲解 BitSet
查看>>
sql语句中where与having的区别
查看>>
Python数据分析入门案例
查看>>
Java的值传递和引用传递
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>
Linux 中【./】和【/】和【.】之间有什么区别?
查看>>
内存地址对齐
查看>>
看门狗 (监控芯片)
查看>>
#ifndef #define #endif
查看>>
css背景样式
查看>>
JavaScript介绍
查看>>
正则表达式
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>