SQL嵌套查寻初识,以及SOME ANY EXISTS的基础常识
SELECT <目标表达式1>[,...]
FROM<表或视图名1>
//FROM(<查询到的表或视图名1>)
WHERE [表达式] (SELECT <目标表达式2>[,...]
FROM <表或视图名2>)
[GROUP BY <分组条件>
HAVING [<表达式>比较运算符] (SELECT <目标表达式2>[,...]
FROM <表或视图名2> )]
子查询存在NULL值时,避免使用NOT IN。因为当子查询的结果包括了NULL值的列表时,把NULL值当成一个未知数据,不会存在查询值不在列表中的记录。
use student
select *
from student
where 学号 not in
(select 学号 from grade
)
由于子查询的结果包括了NULL值,所以最终的查询结果只有空值。正确查询的SQL语句如下:
use student
select *
from student
where 学号 not in
(select 学号 from grade where 学号 is not null)
SQL支持3种定量比较谓词:SOME、ANY和ALL。它们都是判断是否任何或全部返回值都满足搜索要求的。其中SOME和ANY谓词是存在量的,只注重是否有返回值满足搜索要求。这两种谓词含义相同,可以替换使用。
SOME是把每一行指定的列值与子查询的结果进行比较,如果哪行的比较结果为真,满足条件就返回该行。本实例的嵌套的子查询结果就是一个数值,然后“student”学生表的每一条记录的年龄列值与之相比较,满足就返回行。
ANY属于SQL支持的3种定量谓词之一。且和SOME完全等价,即能用SOME的地方完全可以使用ANY。
SQL中定量谓词不支持反操作,也就是说,不能在ANY或者SOME前加NOT关键字。但可以用“<>”号表示否定
EXISTS谓词只注重子查询是否返回行。如果子查询返回一个或多个行,谓词返回为真值,否则为假。EXISTS搜索条件并不真正地使用子查询的结果。它仅仅测试子查询是否产生任何结果。
SQL嵌套查寻初识,以及SOME ANY EXISTS的基础常识的更多相关文章
- SQL——嵌套查询与子查询
前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...
- 转【】浅谈sql中的in与not in,exists与not exists的区别_
浅谈sql中的in与not in,exists与not exists的区别 1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...
- 浅谈sql中的in与not in,exists与not exists的区别
转 浅谈sql中的in与not in,exists与not exists的区别 12月12日北京OSC源创会 —— 开源技术的年终盛典 » sql exists in 1.in和exists ...
- (转)sql中 in 、not in 、exists、not exists 用法和差别
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AI ...
- SQL Server - 数据库初识
在互联网笔试中,常遇到数据库的问题,遂来简单总结,注意,以 Sql Server 数据库为例. 数据库 数据库系统,Database System,由数据库和数据库管理系统组成. 数据库,Data ...
- PL/SQL 嵌套表变长数组和索引表[转]
关于PL/SQL中这三种数组的介绍,不想写了.转一篇日志吧…… 链接:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html ...
- LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains
我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和Exists/In/Any/All/Contains操作符. Group By/Having操作符 适用场景 ...
- SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能,简短的内容,深入的理解,Always to review the basics. ...
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)
1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] ...
随机推荐
- 51nod1295 XOR key
第一次写可持久化trie指针版我... //Null 的正确姿势终于学会啦qaq... #include<cstdio> #include<cstring> #include& ...
- mysql-备份和还原(普通还原和binlog还原)
1)备份 mysqldump -uroot -proot share -l -F > /tmp/share.sql 说明:-l 锁表 -F 刷新日志文件(相当于flush logs) 2)还原( ...
- codeigniter框架扩展核心类---实现前台后台视图的分离
1. 扩展核心类,主要作用就是扩展系统现在的功能. 为前台增加独立的视图文件夹: a. 自定义路径常量 :在application ->config/ constants.php中增加 /*m ...
- activiti 引擎 数据库设计说明书
1.结构设计 1.1. 逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...
- DESCryptoServiceProvider加密、解密
.net名称空间System.Security.Cryptography下DESCryptoServiceProvider类为我们提供了加密和解密方法,我们只需少许代码便可实现加密和解密. 稍感不托的 ...
- 中小型数据库 RMAN CATALOG 备份恢复方案(一)
对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选.尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少 ...
- JS面向对象组件(六) -- 拖拽功能以及组件的延展
HTML部分 <div id="div1"></div> <div id="div2"></div> CSS部分 ...
- java事务的处理
java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务. 如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先 ...
- vmware 连网
Nat 这 种方式下,虚拟机的网卡连接到宿主的 VMnet8 上.此时系统的 VMWare NAT Service 服务就充当了路由器的作用,负责将虚拟机发到 VMnet8 的包进行地址转换之后发到实 ...
- web-3g-(163)网易-邮箱-记事本-数据库设计
ylbtech-DatabaseDesgin:ylbtech-cnblogs(博客园)-数据库设计-2,Admin(用户后台) DatabaseName:cnblogs(博客园) Model:Admi ...