有2张表,结构如下:
家长表 genearch:
gid varchar2(4) primary key,
gname varchar2(10)
学生表 student:
stuid varchar2(4) primary key,
sname varchar2(10) not null,
gid varchar2(4)
其中,student表中的字段gid是表genearch的外键.
现在有个小需求,student表中有些学生是没有家长的,要求查出student表中没有家长的学生信息.
以下是2个sql:
1. 使用IN查询
SELECT S.STUID, S.SNAME
FROM STUDENT S
WHERE S.GID IN (SELECT gid FROM GENEARCH);
2. 使用exists查询
SELECT S.STUID, S.SNAME
FROM STUDENT S
WHERE EXISTS (SELECT gid FROM GENEARCH WHERE s.gid=gid);
建议使用exists查询,因为exists查询效率比IN查询要高,原因请参阅:
http://blog.csdn.net/lick4050312/article/details/4476333
分享到:
相关推荐
#### 一、Exists 的使用方法 在Oracle数据库中,`EXISTS` 是一种常用的子查询操作符,用于判断子查询是否有结果返回。如果子查询至少返回一行数据,则 `EXISTS` 表达式的结果为真;反之,则为假。 **1.1 Exists 的...
在Oracle数据库中,"IN"和"EXISTS"都是用于查询某个集合的元素是否存在于另一个集合中的关键字。然而,它们在处理数据时的效率和适用场景有所不同,这主要取决于涉及的数据量以及表之间的关联。 首先,让我们来看看...
IN、EXISTS、NOT IN、NOT EXISTS 是 SQL 中四种常用的条件判断运算符,它们之间的区别主要体现在使用场景、执行效率和语法结构上。 IN IN 是一种条件判断运算符,用于判断某个值是否存在于一个列表中。其基本语法...
在数据库查询语言中,`IN` 和 `EXISTS` 子句是两种常见的用于关联两个表的方法,它们各自有其独特的性能特点和适用场景。本文将深入解析Oracle中`IN`与`EXISTS`的性能差异,以及如何根据具体需求选择最合适的查询...
在Oracle数据库中,`MINUS`、`IN` 和 `EXISTS` 是三种不同的SQL查询操作符,它们各自用于特定的数据处理场景。了解并熟练掌握这些操作符对于优化查询性能和编写复杂的SQL语句至关重要。 1. **MINUS 操作符** `MINUS...
在数据库查询语言SQL中,“Exists”与“In”是两种常用的子查询方法,它们在实际应用中各有优势与局限。本文将深入探讨这两种方法的工作原理、应用场景以及性能差异,帮助读者更好地理解和选择合适的查询方式。 ###...
在Oracle数据库中,`NOT EXISTS` 子句常用于查询中,以排除某些特定条件的记录。然而,它对查询性能的影响可能并不总是直观的,尤其是在涉及到外层查询时。本文将深入探讨`NOT EXISTS`如何影响外层查询,并通过示例...
最后一个解决方案是将 in 字句的内容放入到一个新表中,然后使用 join 或者 exists 连接该表来实现参数化查询。 我们可以使用参数化查询来实现 where in 和 like 的参数化查询,提高 SQL 的查询性能和安全性。但是...
Oracle数据库是世界上最流行的数据库管理系统之一...学习和掌握Oracle中的SUM函数及其应用场景,对于提升数据库查询和分析能力至关重要。同时,了解如何自定义函数以处理特定需求,也是提升数据库管理技能的重要部分。
本文详细介绍了Oracle数据库中常用的通配符以及其他相关符号的含义及使用方法。通过这些符号的应用,可以使SQL查询更加灵活多样,有助于提高数据检索的准确性和效率。在实际工作中,掌握并熟练应用这些符号对于高效...
1. 优化 SQL 语句:避免使用 NOT IN 操作符,推荐使用 NOT EXISTS 或(外连接+判断为空)方案代替;使用 IN 时,将出现最频繁的值放在最前面,出现得最少的放在最后面;使用 EXISTS、NOT EXISTS、IN、LEFT OUTER ...
其他优化提示中,IN和EXISTS子查询的使用是个常见话题。通常,当比较单个值时,EXISTS通常比IN更高效,因为它只需要检查是否存在匹配的记录,而不需要返回实际的值。反之,如果IN中的列表较小,且不需要额外的行检查...
"SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别"是SQL查询的基础。`IN`用于判断某值是否在给定的集合中,`NOT IN`则相反。`EXISTS`和`NOT EXISTS`则更注重子查询的存在与否,而非具体值的比较。例如,`SELECT * ...
本文旨在深入探讨Oracle数据库中通配符与运算符的使用方法,帮助读者更好地理解和掌握这些关键概念。 #### 二、Oracle通配符详解 在Oracle数据库中,通配符主要用于模糊查询,即通过模式匹配来检索符合特定条件的...
本文将详细地介绍 Oracle 语句优化的方法和技巧,涵盖多表关联、EXISTS 和 IN 语句的使用、INDEX_JOIN 优化、WHERE 和 HAVING 语句的区别、NOT IN 和 <> 操作符的使用、LIKE 操作符的替代、UNION 操作符的优化、SQL ...
2. **避免`IN`和`EXISTS`**:这些操作可能导致全表扫描,尽量改用`JOIN`或其他方式来实现相同的功能。 3. **集合运算**:使用`UNION ALL`而非`UNION`,避免重复记录检查的开销。 **索引设计**: 1. **避免无谓的...
3. 子查询:理解嵌套查询的概念,掌握IN、NOT IN、EXISTS、NOT EXISTS等子查询用法。 4. 分区和索引:了解Oracle的分区技术,如何提高查询性能,以及索引的创建、管理和使用。 5. 视图:创建和使用视图以简化复杂...
5. PL/SQL技巧:PL/SQL在Oracle数据库性能优化中发挥着重要作用,熟练使用PL/SQL的过程化特性和优化技巧,可以进一步提高数据库操作的效率。例如,在PL/SQL程序中使用显式游标进行数据遍历可以更精确地控制数据的...
### Oracle 子查询详解 #### 引言 在数据库查询语言SQL中,子查询是一...然而,正如所有强大的工具一样,正确的使用方法和充分的性能考量是必不可少的。希望本文能为你在日常的数据库操作中提供有价值的指导和启发。
14. **使用EXISTS替换IN,用NOT EXISTS替换NOT IN**:EXISTS和NOT EXISTS通常比IN和NOT IN更高效,尤其是在涉及子查询时。 15. **识别低效SQL语句**:监控和分析SQL执行计划,找出执行时间长、资源消耗大的语句进行...