Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Semestr2 / 1 - Oracle / 6-subqueries.ppt
Скачиваний:
17
Добавлен:
12.05.2015
Размер:
150.02 Кб
Скачать

6

Subqueries

Objectivesj i

After completing this lesson, you should be able to do the following:

Describeri thet typest off problemsr l thatt t subqueriesri can solvel

Definefi subqueriesri

Listi t thet typest off subqueriesri

Writerite singlei le--rowr and multiplelti le--rowr subqueriesri

6-2

Usingi a Subquery to Solvel a Probleml

“Who has a salaryl greater than Jones’s?”

Main Query

?

“Which employees have a salary greater

than Jones’s salary?”

 

 

Subquery

 

 

?

“What is Jones’s salary?”

 

 

6-3

Subqueriesi

 

 

 

 

 

 

SELECT

select_list

 

 

 

FROM

table

 

 

 

WHERE

expr operator

 

 

 

 

(SELECT

select_list

 

 

 

FROM

table);

 

 

 

 

 

 

 

 

 

 

 

TheThesubquerysubquery(inner(innerquery)query)executesexecutesonceoncebeforebeforethethemainainqueryquery..

TheTheresultresultofofthethesubquerysubqueryisisusedusedbybythethemainainqueryquery(outer(outer query)query)..

6-4

Usingi a Subquery

SQL>

SELECT

ename

2

FROM

emp

2975

3

WHERE

sal

>

4

(SELECT sal

5

FROM

emp

6

WHERE

empno=7566);

ENAME

----------

KING

FORD

SCOTT

6-5

Guidelinesi li for Usingi Subqueriesi

Enclosel subqueriesri inin parenthesesr t ..

Placel subqueriesri on thet rightri t sidei off thet comparisonri operatorr t r..

Do nott add an ORDER BY clausel toto a subqueryry..

Use singlei le--rowr operatorsr t rs withith singlei le-- rowr subqueriesri ..

Use multiplelti le--rowr operatorsr t rs withith multiplelti le--rowr subqueriesri ..

6-6

Types of Subqueriesi

Singlei le--rowr subqueryry

Main query

returns

Subquery

Multiplelti le--rowr subqueryry

Main query

returns

Subquery

Multiplelti le--columnl subqueryry

Main query

returns

Subquery

6-7

CLERK

CLERK

MANAGER

CLERK 7900 MANAGER 7698

Singlei le-Row Subqueriesi

Returnt rn onlyly one rowr

Use singlei le--rowr comparisonri operatorsr t rs

Operator Meaning

=Equal to

>Greater than

>=

Greater than or equal to

<Less than

<=

Less than or equal to

 

 

<>

Not equal to

6-8

Executingi Singlei le-Row Subqueriesi

SQL>

SELECT

ename, job

 

2

FROM

emp

CLERK

3

WHERE

job =

4

 

(SELECT

job

5

 

FROM

emp

6

 

WHERE

empno = 7369)

7

AND

sal >

1100

8

 

(SELECT

sal

9

 

FROM

emp

10

 

WHERE

empno = 7876);

ENAME JOB

---------- ---------

MILLER CLERK

6-9

Usingi Group Functionsi

inin a Subquery

SQL>

SELECT

ename, job, sal

800

2

FROM

emp

 

3

WHERE

sal =

 

4

 

(SELECT

MIN(sal)

5

 

FROM

emp);

ENAME

JOB

SAL

----------

--------- ---------

SMITH

CLERK

800

6-10

HAVINGI Clausel withi Subqueriesi

The Oracler le Serverr r executest subqueriesri firstfir t..

The Oracler le Serverr r returnsr t r resultsr lts intoi to thet mainin query’sr ’s HAVINGI clausel ..

SQL>

SELECT

deptno, MIN(sal)

 

2

FROM

emp

 

3

GROUP BY

deptno

800

4

HAVING

MIN(sal) >

 

5

 

(SELECT

MIN(sal)

6

 

FROM

emp

7

 

WHERE

deptno = 20);

6-11

Соседние файлы в папке 1 - Oracle