✅ 1. IN – 리스트에 포함되는 값만 추출
📌 뜻
WHERE 컬럼 IN (값1, 값2, 값3)
→ 컬럼 값이 주어진 값 리스트 중 하나라도 맞으면 통과
✅ 예제: 특정 부서의 직원만 보기
sql
복사편집
SELECT emp_name, dept_id FROM employees WHERE dept_id IN (10, 20);
설명:
→ dept_id가 10 또는 20인 직원만 조회
emp_namedept_id
홍길동 | 10 |
이순신 | 10 |
강감찬 | 20 |
✅ 실무 팁: 서브쿼리 안에서도 자주 씀
sql
복사편집
SELECT emp_name FROM employees WHERE dept_id IN ( SELECT dept_id FROM departments WHERE location = '서울' );
→ 서울에 있는 부서 소속 직원만 조회
✅ 2. BETWEEN – 범위 조건
📌 뜻
WHERE 컬럼 BETWEEN A AND B
→ 컬럼 값이 A 이상, B 이하일 때 참
(포함됨)
✅ 예제: 2500 ~ 4000 사이 급여 직원
sql
복사편집
SELECT emp_name, salary FROM employees WHERE salary BETWEEN 2500 AND 4000;
emp_namesalary
홍길동 | 2800 |
이순신 | 3200 |
유관순 | 3000 |
강감찬 | 4000 |
✅ BETWEEN은 날짜에도 많이 씀
sql
복사편집
WHERE hire_date BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD') AND TO_DATE('2024-12-31', 'YYYY-MM-DD')
✅ 3. EXISTS – "값이 있냐?"를 물어봄 (존재 여부 확인)
📌 뜻
WHERE EXISTS (서브쿼리)
→ 서브쿼리 결과가 1건이라도 있으면 TRUE
✅ 예제: 급여 4000 이상인 기록이 있는 부서만 출력
sql
복사편집
SELECT dept_id FROM departments D WHERE EXISTS ( SELECT 1 FROM employees E WHERE E.dept_id = D.dept_id AND E.salary >= 4000 );
설명:
→ employees 테이블에 해당 부서에서 4000 이상 급여가 한 명이라도 있으면 통과
✅ EXISTS vs IN 차이
구분INEXISTS
사용 대상 | 값 목록 | 서브쿼리 존재 여부 |
결과 조건 | 값이 리스트에 포함되면 참 | 서브쿼리 결과가 있으면 참 |
특징 | 서브쿼리 결과를 비교 | 서브쿼리가 실행되고 결과 유무만 체크 |
✅ EXISTS 실무 예: 학생이 성적을 가진 경우만 조회
sql
복사편집
SELECT student_id, student_name FROM Students S WHERE EXISTS ( SELECT 1 FROM Grades G WHERE G.student_id = S.student_id );
→ 성적(Grades) 테이블에 한 건이라도 존재하면 조회
✅ 세 가지 요약
문법의미예시
IN | 리스트 포함 여부 | dept_id IN (10, 20) |
BETWEEN | 범위 조건 (포함) | salary BETWEEN 3000 AND 4000 |
EXISTS | 서브쿼리 결과 존재 여부 | WHERE EXISTS (SELECT ... ) |
'Sql' 카테고리의 다른 글
SQL 프로그램없이 웹으로 실습하기 (1) | 2025.07.07 |
---|---|
실무에서 SQL 쿼리를 초보자가 쉽게 이해하고 익히려면 (0) | 2025.07.07 |
GROUP BY 와 HAVING (0) | 2025.07.07 |
BxM 프레임워크의 일반적인 계층 이해(1) (1) | 2025.07.02 |
BxM 프레임워크 이해 (레스토랑 예제) (0) | 2025.07.02 |