SQL의 WHERE 절, 조건부 조회

SQL의 WHERE 절, 조건부 조회

Database
SQL의 WHERE 절, 조건부 조회
Author

gabriel yang

Published

December 9, 2024


SQL의 WHERE 절: 조건부 조회의 시작

데이터베이스에서 필요한 데이터만 선택하려면 조건을 지정해야 합니다. SQL에서 이 조건을 명시할 때 사용하는 것이 바로 WHERE 절입니다. WHERE은 테이블에서 특정 조건을 만족하는 데이터만 조회하거나 수정, 삭제할 때 사용됩니다.

테스트 데이터 준비하기

다음은 예제를 실행하기 위한 기본 데이터입니다. employees라는 테이블을 생성하고 데이터를 삽입합니다.

-- 테이블 생성
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50),
    salary INT,
    phone VARCHAR(15)
);

-- 데이터 삽입
INSERT INTO employees (id, name, department, salary, phone)
VALUES
(1, '홍길동', '영업', 4500, '010-1234-5678'),
(2, '김철수', '마케팅', 5200, '010-2345-6789'),
(3, '이영희', '기술', 6000, NULL),
(4, '박민수', '영업', 3000, '010-3456-7890'),
(5, '최수진', '인사', 2800, NULL);

결과:

id name department salary phone
1 홍길동 영업 4500 010-1234-5678
2 김철수 마케팅 5200 010-2345-6789
3 이영희 기술 6000
4 박민수 영업 3000 010-3456-7890
5 최수진 인사 2800

주요 사용 예제와 결과

1. 특정 값과 일치하는 데이터 조회

쿼리: 이름이 “홍길동”인 직원 조회

SELECT *
FROM employees
WHERE name = '홍길동';

결과:

id name department salary phone
1 홍길동 영업 4500 010-1234-5678

2. 숫자 조건 활용

쿼리: 연봉이 5000 이상인 직원 조회

SELECT name, salary
FROM employees
WHERE salary >= 5000;

결과:

name salary
김철수 5200
이영희 6000

3. 여러 조건 결합

  • AND: 두 조건을 모두 만족해야 함.
  • OR: 하나의 조건만 만족해도 됨.

쿼리: 부서가 ’영업’이고 연봉이 3000 이상인 직원 조회

SELECT name, department, salary
FROM employees
WHERE department = '영업' AND salary >= 3000;

결과:

name department salary
홍길동 영업 4500
박민수 영업 3000

쿼리: 부서가 ’영업’이거나 ’마케팅’인 직원 조회

SELECT name, department
FROM employees
WHERE department = '영업' OR department = '마케팅';

결과:

name department
홍길동 영업
김철수 마케팅
박민수 영업

4. 범위 조건

쿼리: 연봉이 3000에서 5000 사이인 직원 조회

SELECT name, salary
FROM employees
WHERE salary BETWEEN 3000 AND 5000;

결과:

name salary
홍길동 4500
박민수 3000

5. 특정 값이 목록에 포함되어 있는지 확인

쿼리: 부서가 ‘영업’, ‘마케팅’, ‘기술’ 중 하나인 직원 조회

SELECT name, department
FROM employees
WHERE department IN ('영업', '마케팅', '기술');

결과:

name department
홍길동 영업
김철수 마케팅
이영희 기술
박민수 영업

6. 부분 일치 검색

  • LIKE: 특정 패턴과 일치하는 데이터를 검색할 때 사용.
    • %: 0개 이상의 문자
    • _: 1개의 문자

쿼리: 이름이 ’김’으로 시작하는 직원 조회

SELECT name
FROM employees
WHERE name LIKE '김%';

결과:

name
김철수

쿼리: 이름의 두 번째 글자가 ’수’인 직원 조회

SELECT name
FROM employees
WHERE name LIKE '_수%';

결과:

name
최수진

7. NULL 값 처리

NULL 값은 따로 처리해야 합니다. 비교 연산자(=, !=)로는 NULL을 정확히 확인할 수 없습니다.

쿼리: 전화번호가 등록되지 않은 직원 조회

SELECT name
FROM employees
WHERE phone IS NULL;

결과:

name
이영희
최수진