본문 바로가기

sqld

2-4) WHERE 절

WHERE 절
  • 테이블의 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶을 경우 사용
  • 여러 조건 동시 전달 가능 (AND와 OR로 조건 연결)
  • NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용
    • = 연산자로 조회 불가
  • 연산자를 사용하여 다양한 표현이 가능
  • 조건 전달 시 비교 대상의 데이터 타입 일치하는 것이 좋음
    • 예) EMP 테이블의 부서번호 컬럼의 데이터타입은 숫자인데 문자 상수로 비교 시 성능 문제 발생

 

 

** 문법

 

 

** 주의사항

  • 문자나 날짜 상수 표현 시 반드시 홑따옴표 사용 (다른 절에서도 동일 적용)
    • 예) 'SMITH' 등
  • ORACLE은 문자 상수의 경우 대소문자를 구분
  • MSSQL은 기본적으로 문자 상수의 대소문자를 구분하지 X

 

예1) 이름이 SMITH인 직원 조회 (조건절에 문자 상수 사용)

 

  • ORACLE은 대소문자 구분 → 데이터가 SMITH로 저장, 소문자로 조회 시 출력 X

 

예2) SAL이 1500 이상인 사원 정보 조회 (숫자 상수 전달)

  • 문자, 날짜가 아닌 숫자 상수 전달할 때는 홑따옴표 사용 X

 

예3) COMM 값이 NULL인 직원 정보 출력

  • IS NULL 사용, COMM = NULL로 조회 불가

 

예4) 여러 조건 전달 - AND 연산자 사용

  • DEPTNO가 10이면서 SAL이 2000 이상인 직원 조회

 

예5) 여러 조건 전달 - OR 연산자 사용

  • DEPTNO가 10이거나 SAL이 2000 이상인 직원 정보 출력

 

IN 연산자
  • 포함연산자로 여러 상수와 일치하는 조건 전달 시 사용
  • 상수를 괄호로 묶어서 동시에 전달
    • 문자와 날짜 상수의 경우 반드시 홑따옴표와 함께

 

예) SMITH와 SCOTT의 직원 정보 출력

  • OR 연산자를 통해 표현할 수도 있지만 IN 연산자를 통해 ENAME = 구문의 중복을 막을 수 있음

 

 

BETWEEN A AND B 연산자
  • A보다 크거나 같고 B보다 작거나 같은 조건을 만족
  • A와 B에 범위로 묶을 상수값 전달 (문자, 숫자, 날짜 모두 가능)
  • A가 B보다 작아야 함 → 반대로 작성 시 아무것도 출력되지 X
  • A와 B도 범위에 포함 ! (A 이상 B 이하)

 

예) SAL이 2000 이상 3000 이하인 직원 정보 출력

  • SAL의 반복 사용 BETWEEN A AND B 연산자 사용

  • 반대로 사용 시 조회 X → 범위 체크 중요

 

LIKE 연산자
  • 정확하게 일치하지 않아도 되는 패턴 조건 검사 시 사용
  • %, _
    • % : 자리수 제한 없는 모든 값
    • _ : _ 하나 당 한 자리수의 모든 값

 

예)

ENAME LIKE 'S%' : 이름이 S로 시작 (길이 상관 X)

ENAME LIKE '%S%' : 이름에 S가 포함되는 (길이 상관 X)

ENAME LIKE '%S' : 이름이 S로 끝나는 (길이 상관 X)

ENAME LIKE '_S%' : 이름의 두 번째 글자가 S인 (길이 2 이상)

ENAME LIKE '__S__' : 이름의 가운데 글자가 S이고 길이가 5글자

 

NOT 연산자
  • 조건 결과의 반대집합. 즉, 여집합
  • NOT IN, NOT BETWEEN A AND B, NOT LIKE, NOT NULL 등으로 사용

 

예) NOT 연산자의 사용

  • SAL <= 3000으로 사용하면 되므로 이런 경우에는 굳이 NOT 연산자 사용 X

 

 

 

'sqld' 카테고리의 다른 글

2-6) ORDER BY 절  (0) 2024.08.21
2-5) GROUP BY 절과 HAVING 절  (0) 2024.08.21
2-3) 함수  (0) 2024.08.21
2-2) SELECT 문  (0) 2024.08.20
2-1) 관계형 데이터베이스 개요  (0) 2024.08.19