28일차 - SQL(4)

HA_·2025년 2월 12일
0

4장. 필터링

4.1 조건 평가

WHERE 절

  • AND 또는 OR 연산자로 하나 이상의 조건을 포함
    • AND: 모든 조건이 true
WHERE first_name =	'STEVE' AND create_date >	'2006-01-01'

• OR: 조건 중 하나만 true이면, 해당 조건은 true

 WHERE first_name =	'STEVE' OR create_date > '2006-01-01'
  • 괄호 사용
    • 여러 개의 조건을 포함하는 경우, 괄호를 써서 의도를 명확히 표현
WHERE (first_name =	'STEVE' OR last_name = 'YOUNG')
 AND create_date >	'2006-01-01
  • not 연산자
WHERE not (first_name =	'STEVE' OR last_name =	'YOUNG')
 AND create_date >	'2006-01-01'

»2006년 1월 1일 이후에 기록이 생성된 사람 중에
»이름이 STEVE이거나 성이 YOUNG이 아닌 행만 검색

  • not 연산자로 <> 사용
WHERE first_name <> 'STEVE' AND last_name <> 'YOUNG'
 AND create_date >	'2006-01-01

4.2 조건 작성

조건 작성

  • 하나 이상의 연산자와 결합된 표현식으로 구성
  • 표현식
    • 숫자
    • 테이블 또는 뷰의 열
    • 문자열
    • concat()과 같은 내장 함수
    • 서브 쿼리
    • (‘Boston’, ’New YORk‘, ‘Chicago’)와 같은 표현식 목록
  • 조건 연산자
    • 비교 연산자: =, !=, <, >, <>, like, in, BETWEEN
    • 산술 연산자: +, -, *, /

4.3 조건 유형

동등 조건(equality condition): ‘열 = 표현/값’

부등 조건(inequality condition): 두 표현이 동일하지 않음

  • <> 또는 != 사용

범위 조건

  • 해당 식이 특정 범위 내에 있는지 확인
    • 해당 날짜만 검색: date(rental_date) = ‘2005-05-25’

범위 조건

  • 2005년 6월 14일부터 6월 16일까지의 데이터를 출력하기 위해
    • date(rental_date)를 사용: 정확한 날짜만 추출

BETWEEN 연산자

  • BETWEEN [범위의 하한값] AND [범위의 상한값]
    »하한값, 상한값의 위치가 바뀌면 결과 출력 없음
  • 숫자 범위 사용
    • 하한값과 상한값이 범위에 포함됨

문자열 범위

§last_name이 ‘FA’와 ‘FRB’로 시작하는 데이터 리턴

4.3.3 멤버십 조건

OR 또는 IN() 연산

  • 유한한 값의 집합으로 제한

IN() 연산

• 컬럼명 IN (값1, 값2, ...)
• 지정한 컬럼의 값이 특정 값에 해당되는 조건을 만들 때 사용 (OR 대신 사용)

서브 쿼리 사용

  • 값의 집합을 생성할 수 있음
SELECT title,	rating
 FROM film
 WHERE rating	in (SELECT rating	FROM film	WHERE title	like '%PET%');

• 서브 쿼리 내용
- ‘PET’을 포함하는 영화 제목을 찾고, 그 영화 제목의 rating을 반환 (‘P’, ‘PG’)

»‘PET%’: PET로 시작하는 어
»‘%PET’: PET로 끝나는 단어
»‘%PET%’: PET를 포함하는 단어

SELECT title,	rating	FROM film	WHERE title	like '%PET%';

• WHERE 절 내용

  • WHERE rating in ('G', 'PG');

NOT IN 사용

  • 표현식 집합 내에 존재하지 않음
    • NOT IN(‘PG-13’, ‘R’, ‘NC-17’)- 영화 등급이 ‘PG-13’, ‘R’, ‘NC-17’이 아닌 모든 영화를 찾음
    • NOT IN(‘PG-13’, ‘R’, ‘NC-17’)- 영화 등급이 ‘PG-13’, ‘R’, ‘NC-17’이 아닌 모든 영화를 찾음

4.3.4 일치 조건

문자열 부분 가져오기

  • left(문자열, n)
    • 문자열의 가장 왼쪽부터 n개 가져옴

  • mid(문자열, 시작 위치, n),
    • substr(문자, 시작 위치, n)도 동일한 기능 수행: 시작 위치는 1부터 시작

  • right(문자열, n)
    • 문자열의 가장 오른쪽부터 n개 가져옴

와일드 카드

  • ‘_’: 정확히 한 문자
  • ‘%’: 개수에 상관없이 모든 문자 포함

일치 조건(matching condition)

정규 표현식 사용

  • ‘^[QY]’: Q 또는 Y로 시작하는 단어 검색

Null값의 다양한 경우

  • 해당 사항 없음
  • 아직 알려지지 않은 값
  • 정의되지 않은 값

Null 확인 방법

  • is null 사용 (= null)

is not null

  • 열에 값이 할당되어 있는 경우 (null이 아닌 경우)

Null과 조건 조합

  • 2005년 5월에서 8월 사이에 반납되지 않은 대여 정보 검색
    • 반납이 되지 않은 경우, 반납 날짜의 값이 NULL
    • 또는 반납 날짜가 2005년 5월~ 2005년 8월 사이가 아닌 경우

0개의 댓글