首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > Review SQL- neglected SQL Keywords
【标  题】:Review SQL- neglected SQL Keywords
【关键字】:Review,SQL-,neglected,SQL,Keywords
【来  源】:http://blog.csdn.net/annicybc/archive/2007/04/19/1571232.aspx

Review SQL- neglected SQL Keywords

1、Exists and All

EXISTS is used in subquery, when the return of the subquery have rows is True, else if no rows return is False. examples:

SELECT Col1,Col2
FROM Tb1
WHERE EXISTS
(
SELECT *
FROM Tb2 WHERE Col1 = 'test'); 

SELECT Col1,Col2
FROM Tb1
WHERE NEXISTS
(
SELECT *
FROM Tb2 WHERE Col1 = 'test'); 

ALL is another unusual keyword in SQL statement, and usually it can replace by another keywords.
example:

SELECT Col1,Col2
FROM Tb1
WHERE Col2 >= ALL
(
SELECT Col1
FROM Tb2);

 

注:IN和EXISTS 

有时候会将一列和一系列值相比较。最简单的办法就是在where子句中使用子查询。在where子句中可以使用两种格式的子查询。 

第一种格式是使用IN操作符: 

... 
where column in(select * from ... where ...);  

第二种格式是使用EXIST操作符: 

... 
where exists (select 'X' from ...where ...);  

我相信绝大多数人会使用第一种格式,因为它比较容易编写,而实际上第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。 

第二种格式中,子查询以‘select 
'X'开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定在where语句中使用的列存在索引)。相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。 

通过使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。 

同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。 

 

2,Union
Keyword UNION will eliminate same rows copy automatice, but in the single query, you must use keyword DISTINCT.

SQL Server 存储过程嵌套示例:【上一篇】
Oracle10g EM Database Console显示信息错误,和真实信息不一致:【下一篇】
【相关文章】
  • SQL Server 存储过程嵌套示例
  • Excel导入SQL数据库完整代码
  • 一步一步设置 PHP 和 MySQL 开发环境
  • 领导汇报_数据统计_sql.txt
  • mysql cluster 运用disk data storage 的测试
  • 安装linux+apache+mysql+php
  • ORACLE:APP-SQLAP-97038 应付发票无法释放暂挂
  • 基于sqlce的数据操作
  • 最基础sql语句
  • 教你如何实现SQL下的字符串拆分
  • 【随机文章】
  • 光纤的诞生
  • 看紧你的3306端口,一次通过mysql的入侵
  • 抵御来自QQ“好友”的攻击
  • 建立指定日期范围的数组
  • Linux系统环境变量详谈[转载]
  • DB2常用傻瓜问题1000问(之四)
  • 用java获得word,excel,pdf等文档的内容
  • DTD语法介绍
  • 抗氧化抗氧化食品抗氧化作用皮肤抗氧化皮肤抗氧化基因康本呵护你的健康
  • 只能显示英文和数字,可能是没能导入
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.