`
java1573
  • 浏览: 122865 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

相关和非相关查询区别

阅读更多

相关和非相关查询区别
--求各部门人数
--格式:select d.*,0 人数 from dept d
select d.*,
(
  select count(*) from emp e
  where e.deptno=d.deptno
) 人数
from dept d

select d.* from dept d
部门:
10
select count(*) from emp e   where e.deptno=10
20
select count(*) from emp e   where e.deptno=20
30
select count(*) from emp e   where e.deptno=30
40
select count(*) from emp e   where e.deptno=40
50
select count(*) from emp e   where e.deptno=50
60
select count(*) from emp e   where e.deptno=60
对于部门表的每一条记录,都要单独执行一次子查询,所以称为相关子查询。

列出薪金比“SMITH”多的所有员工

select * from emp e
where e.sal>
(
  select e.sal from emp e  where e.ename='SMITH'
)
smith的值只求一次,这个值对于emp中所有记录都是一样的,即不与各记录相关,所以称为非相关子查询。


分析:效率高的是:非相关。
原因:相关子查询执行统计的次数太多。

分享到:
评论
1 楼 java1573 2007-10-12  
--测试数据(Oracle的scott模型)
prompt PL/SQL Developer import file
prompt Created on 2007-10-12 by Administrator
set feedback off
set define off
prompt Dropping DEPT...
drop table DEPT cascade constraints;
prompt Dropping EMP...
drop table EMP cascade constraints;
prompt Creating DEPT...
create table DEPT
(
  DEPTNO NUMBER(2) not null,
  DNAME  VARCHAR2(14),
  LOC    VARCHAR2(13)
)
;
alter table DEPT
  add constraint PK_DEPT primary key (DEPTNO);

prompt Creating EMP...
create table EMP
(
  EMPNO    NUMBER(4) not null,
  ENAME    VARCHAR2(10),
  JOB      VARCHAR2(9),
  MGR      NUMBER(4),
  HIREDATE DATE,
  SAL      NUMBER(7,2),
  COMM     NUMBER(7,2),
  DEPTNO   NUMBER(2)
)
;
alter table EMP
  add constraint PK_EMP primary key (EMPNO);
alter table EMP
  add constraint FK_DEPTNO foreign key (DEPTNO)
  references DEPT (DEPTNO);

prompt Disabling triggers for DEPT...
alter table DEPT disable all triggers;
prompt Disabling triggers for EMP...
alter table EMP disable all triggers;
prompt Disabling foreign key constraints for EMP...
alter table EMP disable constraint FK_DEPTNO;
prompt Loading DEPT...
insert into DEPT (DEPTNO, DNAME, LOC)
values (10, 'ACCOUNTING', 'NEW YORK');
insert into DEPT (DEPTNO, DNAME, LOC)
values (20, 'RESEARCH', 'DALLAS');
insert into DEPT (DEPTNO, DNAME, LOC)
values (30, 'SALES', 'CHICAGO');
insert into DEPT (DEPTNO, DNAME, LOC)
values (40, 'OPERATIONS', 'BOSTON');
insert into DEPT (DEPTNO, DNAME, LOC)
values (50, 'zhangyi', 'china');
insert into DEPT (DEPTNO, DNAME, LOC)
values (60, '陈伟林', null);
commit;
prompt 6 records loaded
prompt Loading EMP...
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600, 300, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250, 500, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850, null, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450, null, 10);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7788, 'SCOTT', 'ANALYST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, null, 10);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500, 0, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7876, 'ADAMS', 'CLERK', 7788, to_date('23-05-1987', 'dd-mm-yyyy'), 1100, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950, null, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300, null, 10);
commit;
prompt 14 records loaded
prompt Enabling foreign key constraints for EMP...
alter table EMP enable constraint FK_DEPTNO;
prompt Enabling triggers for DEPT...
alter table DEPT enable all triggers;
prompt Enabling triggers for EMP...
alter table EMP enable all triggers;
set feedback on
set define on
prompt Done.

相关推荐

    BLOB和CLOB的区别以及在ORALCE中的插入和查询操作

    了解BLOB和CLOB的区别以及如何在Oracle中进行插入和查询操作对于数据库开发者和管理员来说至关重要。 首先,我们来看BLOB和CLOB的主要区别: 1. 数据类型:BLOB用于存储二进制大对象,如图片、视频、音频文件或者...

    同步、异步、阻塞、非阻塞的区别

    **阻塞**和**非阻塞**的概念与程序在等待消息时的状态有关,即等待过程中程序是否可以继续执行其他任务。 1. **阻塞**:在等待消息时,程序会停止执行其他任务,完全“阻塞”在这个操作上。例如,进行网络请求时,...

    ORACLE和SQL语法区别归纳

    - Oracle还支持包(PACKAGE),将相关的过程和函数封装在一起,提高代码复用和管理效率。 7. **索引和约束** - Oracle支持位图索引、函数索引、复合索引等多种索引类型,而SQL标准只规定了基本的唯一索引和非唯一...

    sql子查询说明

    在这个例子中,子查询`SELECT id FROM class WHERE name = '一班'`返回“一班”的ID,然后外层查询根据这个ID筛选出学生表中的相关信息。 #### 四、子查询作为SELECT后的某列 子查询也可以用作SELECT语句中的列,...

    嵌入式移动数据库系统中的数据查询

    这类查询方法通常处理的是位置信息和非位置信息相结合的查询,例如查询最近的加油站、医院、饭店等,这类查询对于动态计算位置相关的数据具有重要意义。对于位置相关的查询优化,通常需要在查询条件中加入用户的地理...

    分区索引,本地索引,全局索引的区别

    - **分区消除**:前缀和非前缀索引都支持索引分区消除,但前提是查询条件中需包含索引分区键。 - **唯一性约束**:本地索引只支持分区内的唯一性,如果要在表上设置唯一性约束,必须包含分区键列。 - **可用性**:...

    java 同步、异步、阻塞和非阻塞分析.docx

    在这里,我们将详细介绍这些概念之间的区别和联系。 同步(Synchronous) 同步是指在程序中,一个任务执行完毕后,另一个任务才能开始执行。这种方式下,每个任务都是顺序执行的,一个任务执行完毕后,另一个任务...

    mysql和oracle的区别

    **MySQL**在SQL语句的扩展和灵活性方面表现出色,例如LIMIT功能允许用户限制查询结果集的大小,INSERT语句支持一次插入多行数据,以及SELECT语句无需FROM子句即可查询某些管理数据等。 相比之下,**Oracle**在SQL...

    关于数据库与数据仓库的区别详细介绍

    数据库和数据仓库是两种在数据管理和分析中至关重要的系统,它们在设计目标、用途和结构上有显著的区别。本文将深入探讨这些差异,并结合具体应用场景帮助理解。 首先,数据库设计的核心是面向事务,它是为了处理...

    实验二:表的连接和嵌套查询.docx

    实验二的目的是深入理解和熟练应用MySQL的查询方法,特别是针对多表...同时,学生还分享了相关学习资源,包括日期时间函数、处理空字段、删除记录以及HAVING和WHERE的区别,这些资源对于进一步深入学习SQL非常有帮助。

    数据库T_SQL高级查询6.ppt

    本章节主要介绍了 T-SQL 高级查询的相关知识点,包括聚合函数、GROUP BY 分组、HAVING 筛选结果、连接多个表和子查询等。 一、聚合函数 聚合函数是一种特殊的函数,它可以对一组值执行计算并返回单一的值。常见的...

    MySql相关面试题举例

    本资源摘要信息涵盖了 MySQL 相关的面试题,包括关系型和非关系型数据库的区别、MySQL 语句执行步骤、索引的使用原因、索引的三种常见底层数据结构、索引的常见类型、MyISAM 和 InnoDB 实现 B 树索引方式的区别、...

    长尾关键词和核心关键词区别.pdf

    本文将详细阐述长尾关键词和核心关键词的区别,以及它们在网站优化中的重要性。 首先,核心关键词是网站内容的基石,通常为最简单且搜索量较高的词汇。例如,对于一个提供SEO服务的网站,核心关键词可能包括“SEO”...

    工程数据库与商用数据库的区别

    工程数据库,又称为设计数据库、技术数据库或设计自动化数据库,主要存储了几何、物理、技术和工艺等相关信息及其之间的关联。这类数据库在解决综合工程问题方面发挥着重要作用,并且是集成工程系统的中心组件。 **...

    GIS与其他信息系统的区别.doc

    MIS虽然也可以存储图形信息,但这些图形通常作为文件独立存在,不具备空间查询、检索和分析功能,更注重非图形数据的优化存储和查询。例如,电话查号台是一个MIS,它可以提供电话号码,但无法提供与地理位置相关的...

    基于PHP的简单IP查询程序(非MYSQL)双版本 v1.zip

    【标题】"基于PHP的简单IP查询程序(非MYSQL)双版本 v1.zip" 提供的是一个使用PHP语言编写的IP查询程序,该程序不依赖于MySQL数据库,而是采用了另一种数据存储或处理方式。这可能意味着它使用了文本文件、数组或者...

    数据仓库和大数据的区别?.pdf

    数据仓库和大数据是两个在信息技术领域中至关重要的概念,它们虽然都与数据处理和分析相关,但具有明显的区别。数据仓库是一种专门设计用于支持决策制定的集成化、结构化的数据存储系统。它从企业的各个业务系统中...

    论法务会计与独立审计的联系和区别.pdf

    法务会计的主要目的是为法律诉讼或非诉讼法律事项提供专家证据和专业咨询,其工作重点在于揭示与法律争议相关的财会事实,而独立审计的目的是评估和验证企业财务报表的公允性与合规性。因此,法务会计的证据要求更为...

    基于合理索引的数据库查询优化研究.pdf

    本文将围绕“基于合理索引的数据库查询优化”这一主题展开讨论,重点介绍数据库索引的基本概念、作用以及两种主要索引结构(聚集索引与非聚集索引)的区别,并通过实例分析如何构建合理的索引来优化数据库查询。...

    MS.SQL.Server.2008.技术内幕:T-SQL.查询.rar

    3. **子查询**:嵌套查询的使用,包括在WHERE子句、FROM子句和SELECT子句中的应用,以及相关子查询和不相关子查询的区别。 4. **集合函数**:除了基本的SUM、COUNT、AVG之外,可能还涵盖了MIN、MAX以及GROUP BY与...

Global site tag (gtag.js) - Google Analytics