SlideShare a Scribd company logo
SQL 기초강좌
ANY(SOME), ALL
EXISTS, NOT EXISTS
탑크리에듀(http://www.topcredu.co.kr), 이종철
실습코드 및 동영상보기는
다음 URL에서 가능 합니다.
http://ojc.asia
ANY(SOME)
• 주로 서브 쿼리와 함께 사용되며 서브쿼리에서 여러 개의 값이 나오
게 되는 경우 이 값들에 대해 어떤 한 값 보다만 어떻다라고 비교할
때 사용된다.
• WHERE sal > any (500, 600, 700)와 같은 구문을 보면 sal > 500 or sal >
600 or sal > 700 형태로 해석되어 3개의 값 중 하나의 값인 500보다 크
면 된다(sal > 500), 만약 700보다 크다면 모든 값보다 크게 된다.
• =, !=, >, <, <=, >= 연산자 앞에 나타나며 이어서 여러값을 가진 리스
트나 서브쿼리가 오게된다.
ALL
• ALL은 집합의 모든 값과 비교를 하게 되는데, 모든 값과 비교하여
TRUE가 되어야 한다.
• 예를 들어 급여가 500, 600, 700 모두 보다 큰 값을 원한다면 ALL을 사
용하면 되는데 sal > all(500, 600, 700) 형태가 되고 이것은 sal > 500 and
sal > 600 and sal > 700의 의미로 결국 sal > 700와 같다.
• =, !=, >, <, <=, >= 연산자 앞에 나타나며 이어서 여러값을 가진 리스
트나 서브쿼리가 오게된다.
ANY(SOME), ALL 예문 - 1
-- 먼저 30번 부서 사원들의 급여를
확인해 보자.(가장 작은 값이 950,
큰 값은 2850이다)
SELECT sal FROM emp WHERE
deptno=30;
1600
……
2850
……
950
-- 어떠한 하나의 값만 만족시키면 되므로 sal > 950
과 같은 결과이다. any대신 some을 사용해도 된다.
SELECT ename, sal FROM emp
WHERE sal > ANY (SELECT sal FROM emp
WHERE deptno = 30);
ADAMS 1100
……
KING 5000
ANY(SOME), ALL 예문 - 2
-- 전부를 만족시키기 위해서는 30번부서
의 최고 급여인 2850보가 커야 한다. 즉
sal > 2850의 의미
SELECT ename, sal FROM emp
WHERE sal > ALL
(SELECT sal FROM emp
WHERE deptno = 30);
-- 좌측 ALL을 이용한 쿼리를 ANY로 변환하
면 다음과 같다. WHERE NOT (sal <= 2850)
형태가 되어 결국 sal > 2850이 된다.
SELECT ename, sal
FROM emp e1
WHERE NOT (sal <= ANY (SELECT sal
FROM emp
WHERE deptno = 30));
ANY(SOME), ALL 예문 - 3
-- ALL 구문을 ANY를 사용하지 않고 NOT EXISTS로 변환하면 다음과 같다. 사원을 출력하
는데 급여가 30번 부서원들의 급여보다 작거나 같은 것이 존재하지 않는 것을 추출, 즉 30번
부사원들의 모든 급여보다 큰 급여를 가진 사원을 추출
SELECT ename, sal
FROM emp e1
WHERE NOT EXISTS (SELECT e2.sal
FROM emp e2
WHERE e2.deptno = 30
AND e1.sal <= e2.sal);
EXISTS, NOT EXISTS
• EXISTS : 서브 쿼리가 적어도 하나의 행을 돌려주면 TRUE가 된다. 즉
존재하기만 하면 TRUE.
• NOT EXISTS : 서브 쿼리가 적어도 하나의 행을 돌려주지 않으면
TRUE가 된다. 존재하지 않으면 TRUE.
EXISTS, NOT EXISTS 예문 - 1
-- 부서테이블(DEPT)에서 사원을 한명이라도 가지고 있는 부서출력. 40번 부서는 EMP테이
블에서 부서원들이 한명도 없다.
SELECT dname as "부서명", deptno as "부서코드"
FROM dept WHERE EXISTS ( SELECT * FROM emp
WHERE dept.deptno = emp.deptno);
ACCOUNTING 10
RESEARCH 20
SALES 30
EXISTS, NOT EXISTS 예문 - 2
-- 앞 쿼리 구문을 IN연산자를 이용하면 다음과 같다. (IN은 OR로 해석된다.)
대부분 IN을 이용하는 것보다 EXISTS를 사용하는 것이 쿼리 성능면에서 장
점을 가진다.
SELECT dname as "부서명", deptno as "부서코드"
FROM dept WHERE deptno IN ( SELECT deptno FROM emp
WHERE deptno is not null);
EXISTS, NOT EXISTS 예문 - 3
-- 사원테이블(MYEMP1), 수강테이블(MYSUGANG1) 테이블에서 한과목 이
상 수강한 사원의 수는
SELECT COUNT(empno) FROM myemp1 E
WHERE EXISTS (
SELECT 1 FROM mysugang1 S
WHERE e.empno = s.empno
)
EXISTS, NOT EXISTS 예문 - 4
-- 강좌테이블(MYLECTURE1)에서 수강생이 한명도 없는 과목이름을 출력
하세요.
SELECT lecture_nm FROM mylecture1 l
WHERE NOT EXISTS (
SELECT 1 FROM mysugang1 s
WHERE l.lecture_id = s.lecture_id
);
This practice makes Expert!
PL/SQL단기속성(1일완성)SQL힌트/튜닝(단기2일교육)SQL기초과정

More Related Content

PPTX
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
PPTX
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
PPTX
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
PPTX
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
PDF
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
PPTX
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트

What's hot (20)

PPTX
(SQL튜닝,오라클힌트강좌)구체화뷰(Materialized View)를 통한 그룹함수(SUM,MAX,MIN,AVG)의 튜닝_오라클 옵티마이...
PPTX
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
PPTX
Sql기초강좌2_SET AUTOTRACE_SQL교육
PDF
암달의 법칙과 쿼리튜닝 기초
PDF
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
PDF
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
PDF
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
PDF
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
PDF
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
PPTX
PPTX
효율적인Sql작성방법 2주차
PDF
Xe 구조에 대한 이해
PDF
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
PDF
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
PPTX
Owasp에 대하여
PDF
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PPTX
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
PDF
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
(SQL튜닝,오라클힌트강좌)구체화뷰(Materialized View)를 통한 그룹함수(SUM,MAX,MIN,AVG)의 튜닝_오라클 옵티마이...
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
Sql기초강좌2_SET AUTOTRACE_SQL교육
암달의 법칙과 쿼리튜닝 기초
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
효율적인Sql작성방법 2주차
Xe 구조에 대한 이해
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
Owasp에 대하여
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
Ad

Viewers also liked (15)

PDF
(오라클SQL강좌)오라클 NLS 파라미터_NLS_DATE_FORMAT, NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY...
PDF
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
PDF
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
PDF
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
PDF
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
PDF
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
PDF
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
PDF
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
PDF
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
PDF
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
(오라클SQL강좌)오라클 NLS 파라미터_NLS_DATE_FORMAT, NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY...
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
Ad

Similar to (오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL강좌,SQL튜닝강좌전문(탑크리에듀) (20)

PDF
제2장 데이터 조회하기
PDF
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
PDF
제7장 서브 쿼리
PPTX
Sql 조건연산자를 이용한 조건검색(1)
PPTX
Sql 조건연산자를 이용한 조건검색(2)
PDF
즐겁게 배우는 SQL 51일차 where와 having 차이점 설명
PPTX
파이썬 sqlite 이해하기
PPTX
효율적인Sql작성방법 4주차
PDF
제10장 데이터 무결성과 제약 조건
PDF
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
PDF
mysql 서브쿼리
PPTX
3.4 실행계획 SQL 연산 (Hash Anti-Join)
PPTX
101102 endofdb select.1_rdbms
PPTX
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
PDF
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
PPTX
3.9 실행계획 SQL 연산 (MERGE ANTI-JOIN)
PDF
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
제2장 데이터 조회하기
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
제7장 서브 쿼리
Sql 조건연산자를 이용한 조건검색(1)
Sql 조건연산자를 이용한 조건검색(2)
즐겁게 배우는 SQL 51일차 where와 having 차이점 설명
파이썬 sqlite 이해하기
효율적인Sql작성방법 4주차
제10장 데이터 무결성과 제약 조건
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
mysql 서브쿼리
3.4 실행계획 SQL 연산 (Hash Anti-Join)
101102 endofdb select.1_rdbms
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
3.9 실행계획 SQL 연산 (MERGE ANTI-JOIN)
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

PDF
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
PDF
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
PDF
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
PPTX
[IT교육/IT학원]Develope를 위한 IT실무교육
PPTX
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
PPTX
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
PPTX
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
PPTX
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
PPTX
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
PDF
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
PDF
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
PPTX
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
PPTX
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
PDF
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
PPTX
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
PPTX
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
PPTX
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
PPTX
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
[IT교육/IT학원]Develope를 위한 IT실무교육
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...

(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL강좌,SQL튜닝강좌전문(탑크리에듀)

  • 1. SQL 기초강좌 ANY(SOME), ALL EXISTS, NOT EXISTS 탑크리에듀(http://www.topcredu.co.kr), 이종철
  • 2. 실습코드 및 동영상보기는 다음 URL에서 가능 합니다. http://ojc.asia
  • 3. ANY(SOME) • 주로 서브 쿼리와 함께 사용되며 서브쿼리에서 여러 개의 값이 나오 게 되는 경우 이 값들에 대해 어떤 한 값 보다만 어떻다라고 비교할 때 사용된다. • WHERE sal > any (500, 600, 700)와 같은 구문을 보면 sal > 500 or sal > 600 or sal > 700 형태로 해석되어 3개의 값 중 하나의 값인 500보다 크 면 된다(sal > 500), 만약 700보다 크다면 모든 값보다 크게 된다. • =, !=, >, <, <=, >= 연산자 앞에 나타나며 이어서 여러값을 가진 리스 트나 서브쿼리가 오게된다.
  • 4. ALL • ALL은 집합의 모든 값과 비교를 하게 되는데, 모든 값과 비교하여 TRUE가 되어야 한다. • 예를 들어 급여가 500, 600, 700 모두 보다 큰 값을 원한다면 ALL을 사 용하면 되는데 sal > all(500, 600, 700) 형태가 되고 이것은 sal > 500 and sal > 600 and sal > 700의 의미로 결국 sal > 700와 같다. • =, !=, >, <, <=, >= 연산자 앞에 나타나며 이어서 여러값을 가진 리스 트나 서브쿼리가 오게된다.
  • 5. ANY(SOME), ALL 예문 - 1 -- 먼저 30번 부서 사원들의 급여를 확인해 보자.(가장 작은 값이 950, 큰 값은 2850이다) SELECT sal FROM emp WHERE deptno=30; 1600 …… 2850 …… 950 -- 어떠한 하나의 값만 만족시키면 되므로 sal > 950 과 같은 결과이다. any대신 some을 사용해도 된다. SELECT ename, sal FROM emp WHERE sal > ANY (SELECT sal FROM emp WHERE deptno = 30); ADAMS 1100 …… KING 5000
  • 6. ANY(SOME), ALL 예문 - 2 -- 전부를 만족시키기 위해서는 30번부서 의 최고 급여인 2850보가 커야 한다. 즉 sal > 2850의 의미 SELECT ename, sal FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno = 30); -- 좌측 ALL을 이용한 쿼리를 ANY로 변환하 면 다음과 같다. WHERE NOT (sal <= 2850) 형태가 되어 결국 sal > 2850이 된다. SELECT ename, sal FROM emp e1 WHERE NOT (sal <= ANY (SELECT sal FROM emp WHERE deptno = 30));
  • 7. ANY(SOME), ALL 예문 - 3 -- ALL 구문을 ANY를 사용하지 않고 NOT EXISTS로 변환하면 다음과 같다. 사원을 출력하 는데 급여가 30번 부서원들의 급여보다 작거나 같은 것이 존재하지 않는 것을 추출, 즉 30번 부사원들의 모든 급여보다 큰 급여를 가진 사원을 추출 SELECT ename, sal FROM emp e1 WHERE NOT EXISTS (SELECT e2.sal FROM emp e2 WHERE e2.deptno = 30 AND e1.sal <= e2.sal);
  • 8. EXISTS, NOT EXISTS • EXISTS : 서브 쿼리가 적어도 하나의 행을 돌려주면 TRUE가 된다. 즉 존재하기만 하면 TRUE. • NOT EXISTS : 서브 쿼리가 적어도 하나의 행을 돌려주지 않으면 TRUE가 된다. 존재하지 않으면 TRUE.
  • 9. EXISTS, NOT EXISTS 예문 - 1 -- 부서테이블(DEPT)에서 사원을 한명이라도 가지고 있는 부서출력. 40번 부서는 EMP테이 블에서 부서원들이 한명도 없다. SELECT dname as "부서명", deptno as "부서코드" FROM dept WHERE EXISTS ( SELECT * FROM emp WHERE dept.deptno = emp.deptno); ACCOUNTING 10 RESEARCH 20 SALES 30
  • 10. EXISTS, NOT EXISTS 예문 - 2 -- 앞 쿼리 구문을 IN연산자를 이용하면 다음과 같다. (IN은 OR로 해석된다.) 대부분 IN을 이용하는 것보다 EXISTS를 사용하는 것이 쿼리 성능면에서 장 점을 가진다. SELECT dname as "부서명", deptno as "부서코드" FROM dept WHERE deptno IN ( SELECT deptno FROM emp WHERE deptno is not null);
  • 11. EXISTS, NOT EXISTS 예문 - 3 -- 사원테이블(MYEMP1), 수강테이블(MYSUGANG1) 테이블에서 한과목 이 상 수강한 사원의 수는 SELECT COUNT(empno) FROM myemp1 E WHERE EXISTS ( SELECT 1 FROM mysugang1 S WHERE e.empno = s.empno )
  • 12. EXISTS, NOT EXISTS 예문 - 4 -- 강좌테이블(MYLECTURE1)에서 수강생이 한명도 없는 과목이름을 출력 하세요. SELECT lecture_nm FROM mylecture1 l WHERE NOT EXISTS ( SELECT 1 FROM mysugang1 s WHERE l.lecture_id = s.lecture_id );
  • 13. This practice makes Expert! PL/SQL단기속성(1일완성)SQL힌트/튜닝(단기2일교육)SQL기초과정