- 단일행을 받을 수 있는 연산자 : = , >= , < . != 등
→ 비교 연산자는 이미 많이 경험해 봤으므로
- 다중행을 받을 수 있는 연산자 : IN , ANY , ALL , EXISTS , NOT EXISTS 등
→ 우리가 살펴봐야 할 것은 다중 연산자
--직원 테이블에서 직원ID가 ‘A0006’인 사람과 같은 연봉을 받는
--직원들의 이름과 연봉을 출력하세요. (단, 중첩서브쿼리와 IN을 사용)
SELECT 이름, 연봉
FROM 직원
WHERE 연봉 IN ( SELECT 연봉
FROM 직원
WHERE 직원ID = 'A0006' );
--IN을 사용하는 이유는 서브쿼리의 결과가
--하나인지 여러개인지 알수 없음으로 IN 다중행연산자를 사용함.
정보처리기사에서 나온 SQL 문제 중..
참고 URL : 링크
--(예시)
--직원연락처에 연락처 데이터값이 있는 직원들만 출력된 값.
SELECT 직원ID, 이름
FROM 직원 A
WHERE EXISTS ( SELECT 1
FROM 직원연락처
WHERE 직원ID = A.직원ID );
-- 여기서 1 은 참(true)의 개념을 가짐(기능적의미가 없음)
둘의 결과는 같지만 연산(구동) 순서는 다르다.
- IN
A 테이블 10개 데이터 , B 테이블 13개 데이터
- A의 1번이 B의 데이터 13번까지 모두 조건 비교
- A의 1~ 10까지 B의 데이터 13건 비교하여 총 130번 작업 수행함
- EXISTS
A 테이블 10개 데이터 , B 테이블 13개 데이터
- A의 1번이 B의 데이터가 조건에 맞으면 13번 돌려보지 않고 다음 A의 2번이동
- 반복
- IN에 비해 총 조회수가 현저히 적음(성능면에서 우수함)
(로그인때 자주사용함)