데이터 필터링 (2)
1. IN 연산자
1-1. 용도
IN 연산자는 특정 집합(컬럼 혹은 리스트)에서 특정 집합 혹은 리스트가 존재하는지 판단하는 연산자이다.
1-2. IN 연산자 문법
1) IN 문법
1 | -- COLUMN_NAME 집합에서 VALUE1, VALUE2등의 값이 존재하는지 확인 (조건에 만족한 행을 출력) |
1 | -- COLUMN_NAME 집합에서 TABLE_NAME2 테이블의 COLUMMN_NAME2 집합이 존재하는지 확인 |
2) NOT IN 문법
1 | -- NOT IN -- |
1-3. IN 연산자 실습
>> TABLE
rental |
---|
* rental_id rental_date inventory_id customer_id return_date staff_id last_update |
>> IN 실습
1 | -- CUSTOMER_ID가 1 혹은 2인 행을 뽑아서 RETURN_DATE 내림차순으로 출력한다 |
- IN 연산자는 ‘OR’ && ‘=’ 과 같다
1 | -- OR 사용 -- |
>> NOT IN 실습
1 | -- CUSTOMER_ID가 1 혹은 2가 아닌 행을 뽑아서 RETURN_DATE 내림차순으로 출력한다 |
- NOT IN 연산자는 ‘AND’ && ‘!=’ 과 같다
1 | -- CUSTOMER_ID가 1 혹은 2가 아닌 행을 뽑아서 RETURN_DATE 내림차순으로 출력한다 |
>> 서브 커리
Mission: 2005년 5월 27일에 DVD 반납한 고객의 이름(FIRST_NAME & LAST_NAME)을 출력
- 먼저 RENTAL 테이블에서 2005년 5월 27일에 DVD 반납한 고객의 ID(CUSTOMER_ID)를 추출 (서브 커리 부분)
- 그다음 CUSTOMER 테이블에서 해당 ID인 고객의 이름(FIRST_NAME & LAST_NAME)을 출력 (메인 커리 부분)
1 | -- 서브 커리 부분 -- |
1 | -- 메인 커리 부분 -- |
2. BETWEEN 연산자
2-1. 용도
BETWEEN 연산자는 특정 집합에서 어떠한 컬럼의 값이 특정 범위안에 들어가는 집합을 출력하는 연산자이다.
2-2. BATWEEN 연산자 문법
1) BETWEEN 문법
1 | -- COLUMN_NAME의 값이 VALUE_A와 VALUE_B사이에 있는 집합을 출력한다 |
2) NOT BETWEEN 문법
1 | -- COLUMN_NAME의 값이 VALUE_A와 VALUE_B 사이에 있지 않은 집합을 출력한다 |
2-3. BETWEEN 연산자 실습
>> TABLE
payment |
---|
* payment_id customer_id staff_id rental_id amount payment_date |
>> BETWEEN 실습
1 | -- PAYMENT 테이블에서 AMOUNT가 8과 9사이에 있는 행의 CUSTOMER_ID, PAYMENT_ID, AMOUNT를 출력 |
1 | -- 위 SQL은 이 SQL과 결과가 동일함 |
>> NOT BETWEEN 실습
1 | -- PAYMENT 테이블에서 AMOUNT가 8부터 9사이가 아닌 행의 CUSTOMER_ID, PAYMENT_ID, AMOUNT를 출력 |
1 | -- 위 SQL은 이 SQL과 결과가 동일함 |
>> 일자 비교
1 | -- PAYMENT_DATE가 2007년 2월 7일부터 2007년 2월 15일 데이터를 추출함 |
1 | -- CAST( # AS DATE)와 TO_CHAR( # , 'YYYY-MM-DD')의 결과 확인 |
3. LIKE 연산자
3-1. 용도
LIKE연산자는 특정 집합에서 어떠한 컬럼의 값이 특정 값과 유사한 패턴을 갖는 집합을 출력하는 연산자이다.
3-2. LIKE 연산자 문법
1) LIKE 문법
1 | -- COLUMN_NAME 컬럼의 값이 특정 패턴과 유사한 집합을 출력 |
2) NOT LIKE 문법
1 | -- COLUMN_NAME 컬럼의 값이 특정 패턴과 유사하지 않은 집합을 출력 |
3) 특정 패턴
- 특정 패턴에서 **%**는 어떠한 문자 혹은 문자열을 의미함 (길이가 상관없음)
- 특정 패턴에서 **_**는 한 개의 문자를 의미함
3-3. LIKE 연산자 실습
>> TABLE
customer |
---|
* customer_id store_id first_name address_id activebool create_date last_update active |
>> LIKE 실습
[## LIKE '&&'
] 절은 TURE
/ FALSE
를 반환한다.
'%
'와 '_
'를 이해하기 위해 다음 예를 살펴본다:
SQL | 결과값 | 설명 |
---|---|---|
SELECT | ||
‘FOO’ LIKE ‘FOO’, | TRUE | 'FOO’는 'FOO’이므로 참이다 |
‘FOO’ LIKE ‘F%’, | TRUE | 'F%'는 'F’로 시작하면 모두 참이다 |
‘FOO’ LIKE ‘_O_’, | TRUE | '_O_'는 3자리 문자열이고 가운든 문자가 'O’라면 모두 참이다 |
‘BAR’ LIKE ‘B_’ | TRUE | '_B_'는 B로 시작하는 2자리 문자열이면 모두 참. 하지만 'BAR’는 'B’로 시작하는 3자리 문자열이다 |
1 | -- FIRST_NAME이 'Jen'으로 시작하는 집합을 출력 |
1 | -- FIRST_NAME에 'er'이 존재하는 모든 집합을 출력 |
1 | -- FIRST_NAME: 하나의 문자 + 'her' + 임의의 문자/문자열 |
>> NOT LIKE 실습
1 | -- FIRST_NAME이 'jen'으로 시작하지 않는 집합을 출력 |
4. IS NULL 연산자
4-1. 용도
IS NULL 연산자는 특정 컬럼 혹은 값이 NULL 값인지 아닌지를 판단하는 연산자이다.
IS NULL 혹은 IS NOT NULL로 NULL 유무를 판단한다.
4-2. IS NULL 연산자 문법
1) IS NULL 문법
1 | -- COLUMN_NAME 컬럼의 값이 NULL인 집합을 출력 |
2) IS NOT NULL 문법
1 | -- COLUMN_NAME 컬럼의 값이 NULL이 아닌 집합을 출력 |
4-3. IS NULL 연산자 실습
>> 실습 준비
1 | CREATE TABLE CONTACTS |
1 | SELECT |
>> IS NULL 실습
1 | -- PHONE 컬럼의 값이 NULL인 집합을 출력 |
- [주의] NULL은 “=” 연산으로 비교할 수 없다
1 | SELECT |
>> IS NOT NULL 실습
1 | -- PHONE 컬럼의 값이 NULL이 아닌 집합을 출력 |