SQL/SQLD

#11 WHERE 절

sundori 2025. 4. 10. 16:41

목차

    WHERE 절

    WHERE 절은 테이블에서 조건에 맞는 행(row)만 필터링하는 구문이다.

    SELECT, UPDATE, DELETE 문에서 사용되며, 조건을 만족하는 데이터만 결과에 포함되거나, 수정 또는 삭제 대상으로 지정된다.

     

    ✅ 기본 문법

    SELECT 컬럼명
    FROM 테이블명
    WHERE 조건;

     

    ✅ 사용 가능한 조건 종류

    비교 연산자
    조건 유형 예시 설명
    비교 연산자 =, !=, >, <, >=, <= 숫자, 문자열, 날짜 비교
    논리 연산자 AND, OR, NOT 조건 여러 개 조합
    범위 조건 BETWEEN a AND b a 이상 b 이하 범휘
    집합 조건 IN(a, b, c) 여러 값 중 하나 포함 여부
    패턴 조건 LIKE '%abc%' 문자열 패턴 검색
    NULL 조건 IS NULL, IS NOT NULL 값 존재 여부 판단

     

    ✅ WHERE 예제 모음

    -- 1. 이름이 '우기'인 사람 찾기
    SELECT * FROM users WHERE name = '우기';
    
    -- 2. 나이가 20세 이상인 회원
    SELECT * FROM users WHERE age >= 20;
    
    -- 3. 이메일이 gmail.com인 경우
    SELECT * FROM users WHERE email LIKE '%@gmail.com';
    
    -- 4. 점수가 60 ~ 80 사이인 경우
    SELECT * FROM scores WHERE score BETWEEN 60 AND 80;
    
    -- 5. 부서가 '영업' 또는 '기획'
    SELECT * FROM employees WHERE department IN ('영업', '기획');
    
    -- 6. 주소가 없는 사용자 (NULL)
    SELECT * FROM users WHERE address IS NULL;
    
    -- 7. 여러 조건 조합
    SELECT * FROM users WHERE age > 18 AND gender = 'F';

     

    ⚠️ WHERE 주의사항

    • 문자열 비교 시 ' (작은 따옴표) 꼭 써야함 -> WHERE name = '우기'
    • NULL은 =이 아니라 IS NULL로 비교해야한다.
    • 날짜 비교 시 'YYYY-MM-DD' 형식의 문자열로 입력

    부정 비교 연산자(Not Comparison Operators)

    SQL에서 조건이 '아닌 것'을 표현할 때 사용되는 연산자들로, 보통 NOT, !=, <> 같은 형태를 사용한다.

    필자도 <> 처음 알게 되었다..

    연산자 의미 예시
    != 같지 않음 WHERE age != 30
    <> 같지 않음 WHERE status <> 'active'
    NOT 부정 WHERE NOT gender = 'M'
    NOT BETWEEN 범위 외의 값 WHERE score NOT BETWEEN  60 AND 80
    NOT IN 집합 외의 값 WHERE dept NOT IN ('영업', '기획')
    IS NOT NULL NULL이 아닌 값 WHERE email IS NOT NULL

    논리 연산자(Logical Operators)

    연산자 의미  예시
    AND 두 조건 모두 참 age > 18 AND gender = 'M'
    OR 둘 중 하나만 참이면 됨 score < 60 OR grade = 'F'
    NOT 조건 부정 NOT status = 'ACTIVE'

    부정 SQL 연산자

    연산자 의미 예시
    NOT IN 특정 값 제외 WHERE region NOT IN ('서울', '부산')
    NOT LIKE 패턴 부정 WHERE name NOT LIKE '김%'
    NOT BETWEEN 범위 외 WHERE age NOT BETWEEN 20 AND 30
    IS NOT NULL 값이 존재함 WHERE phone IS NOT NULL

    연산자 우선순위 (Operators Precedence)

    SQL에서 여러 연산자가 함께 쓰일 경우, 아래 순서로 평가가된다. 괄호()를 쓰면 우선 순위를 직접 지정이 가능하다.

    우선순위 연산자 설명
    1 (), IS [NOT] NULL, LIKE, IN, BETWEEN 괄호 및 기본 비교
    2 NOT 부정
    3 *, /, % 산술 연산
    4 +, - 산술 덧셈/뺄셈
    5 =, !=, <>, <, >, <=, >= 비교
    6 AND 논리 AND
    7 OR 논리 OR

     

    🎯 예제: 우선순위 적용 예

    -- AND가 OR보다 우선
    SELECT * FROM users
    WHERE age > 20 AND gender = 'F' OR region = '서울';

    -> 실제 해석 : (age > 20 AND gender = 'F') OR (region = '서울')

     

    • 조건이 많을 땐 괄호로 명확하게 그룹화 해줘야 혼동이 없다.
    • 부정 조건(NOT IN, NOT LIKE)은 누락된 데이터 확인에 자중 사용이 된다.
    • 비교 연산자는 숫자, 날짜, 문자 전부 적용 가능 (단, 문자열은 따옴표 사용 필수!)

     

    728x90

    'SQL > SQLD' 카테고리의 다른 글

    #13 ORDER BY  (0) 2025.04.13
    #12 GROUP BY, HAVING 절  (0) 2025.04.13
    #10 함수  (0) 2025.04.10
    #9 SQL  (0) 2025.04.07
    #8 트랜잭션과 NULL  (0) 2025.04.07