EXISTS( ), NOT EXISTS( )
SELECT A칼럼 FROM WHERE EXISTS( 조건 )
조건의 결과가 존재하면 A칼럼을 출력해
조건의 결과가 존재하지 않으면 아무것도 출력하지마. (결과 : NO DATA FOUND)
SELECT A칼럼 FROM WHERE NOT EXISTS( 조건 )
조건의 결과가 존재하지 않으면 A칼럼을 출력해
조건의 결과가 존재하면 아무것도 출력하지마. (결과 : NO DATA FOUND)
예제
SELECT * FROM EMP;
SELECT JOB FROM EMP
WHERE EXISTS(SELECT * FROM EMP WHERE ENAME='KING');
(ENAME 중 KING이란 데이터 존재하니 JOB칼럼의 모든 데이터가 출력될 것 )
SELECT ENAME, JOB, SAL FROM EMP
WHERE EXISTS(SELECT ENAME FROM EMP WHERE ENAME='KING')
AND SAL > 2000;
(ENAME 중 KING이란 데이터가 존재하니 ENAME, JOB, SAL칼럼을 출력하는데, SAL이 2000 초과인 행만 출력할 것 )
SELECT ENAME, JOB, SAL FROM EMP
WHERE EXISTS(SELECT ENAME FROM EMP WHERE ENAME='KING')
AND SAL > 2000;
(ENAME 중 FLOWER란 데이터가 존재하지 않으니 모든 칼럼을 출력하지 않는다)
칼럼명 IN( ), 칼럼명 NOT IN( )
SELECT A칼럼 FROM WHERE B칼럼 IN( 값, 값, ... )
B칼럼값 중 IN안의 값이 포함된 행에 대해서만 A칼럼을 출력해
B칼럼값 중 IN안의 값이 없으면 아무것도 출력하지마. (결과 : NO DATA FOUND)
SELECT A칼럼 FROM WHERE B칼럼 NOT IN( 값, 값, ... )
B칼럼값 중 IN안의 값이 제외된 행에 대해서만 A칼럼을 출력해
예제
SELECT JOB FROM EMP
WHERE ENAME IN (SELECT * FROM EMP WHERE ENAME='KING');
(ENAME이 KING인 칼럼을 모두 반환해서 ENAME과 비교한다 => 반환값이 너무 많다)
SELECT ENAME, JOB, SAL FROM EMP
WHERE JOB IN (SELECT JOB FROM EMP WHERE ENAME='BLAKE');
(ENAME이 BLAKE인 행의 JOB은 'MANAGER'이다.
모든 JOB의 값 중 'MANAGER'인 행의 ENAME, JOB, SAL을 출력하라)
SELECT ENAME, JOB, SAL FROM EMP
WHERE JOB IN (SELECT JOB FROM EMP WHERE ENAME='BLAKE' OR ENAME='FORD');
(모든 JOB의 값 중 'MANAGER'와 'ANALYST'에 대해서만 ENAME, JOB, SAL을 출력하라)
SELECT ENAME, JOB, SAL FROM EMP
WHERE JOB IN ('COOKIE', 'ANALYST');
(모든 JOB의 값 중 COOKIE에 해당되는 것은 없으니 ANALYST에 대해서만 ENAME, JOB, SAL을 출력하라.)
SELECT ENAME, JOB, SAL FROM EMP
WHERE JOB NOT IN ('COOKIE', 'ANALYST');
(모든 JOB의 값 중 COOKIE와 ANALYST를 제외한 나머지에 대해서만 ENAME, JOB, SAL을 출력하라.)
SELECT ENAME, JOB, SAL FROM EMP
WHERE JOB IN ('COOKIE');
(모든 JOB의 값 중 COOKIE에 대해서만 ENAME, JOB, SAL을 출력하라.)
'Backend' 카테고리의 다른 글
서블릿, HTTP Request, HTTP Response, ObjectMapper (0) | 2021.11.24 |
---|---|
웹 애플리케이션의 이해 (0) | 2021.11.23 |
Oracle Live SQL 사용하기 (DB설치없이 EMP, DEPT 테이블로 SQL실습하기) + 추가 : 기존작업 이어서하는방법 (0) | 2021.11.02 |
자바 변수, 상수, 자료형, 배열, 메서드 (0) | 2021.11.02 |
테스트 (0) | 2021.10.26 |