제5절 WHERE 절
1. WHERE 조건절 개요
- SELECT 과 FROM 절에서 자료를 제한할 때 사용
- FTS(Full Table Scan): WHERE 조건 없이 테이블 전체를 추출하는 것
# WHERE절의 기본 구조
# SELECT와 FROM이 나온 다음에 사용한다.
SELECT 칼럼명
FROM 테이블명
WHERE 조건식 ;
- WHERE 절에 사용할 수 있는 조건
가. 칼럼(Column)명 (보통 조건식의 좌측에 위치)
나. 비교 연산자
다. 문자, 숫자, 표현식 (보통 조건식의 우측에 위치)
라. 비교 칼럼명 (JOIN 사용시)
# Invoice라는 테이블 조회하기
SELECT InvoiceId, InvoiceDate, BillingCity, BillingCountry, Total
FROM Invoice
WHERE InvoiceId < 10
2. 연산자의 종류
- 비교 연산자(부정 비교 연산자), SQL 연산자(부정 SQL 연산자), 논리 연산자, 비교 연산자
- 연산자 계산 우선순위
연산자 우선순위 | 설명 |
1 | 괄호 ( ) |
2 | NOT 연산자 |
3 | 비교 연산자, SQL비교 연산자 |
4 | AND |
5 | OR |
3. 비교 연산자
= , > , >= , < , <=
4. SQL 연산자
BETWEEN 값1 AND 값2 # 값1 과 값2 사이의 데이터 추출
IN (list) # 리스트에 값 중에 포함되면 추출
LIKE '문자열값' #'문자열값' 이라는 값과 같으면 추출
IS NULL # NULL만 추출
# LIKE 함수의 와일드카드
LIKE '%과자%' # '~과자~'를 포함하면 모두 추출 ex) 초코과자, 과자세트, 초코과자세트
LIKE '%과자' # 맨뒤에 '~과자'가 포함하면 모두 추출 ex) 초코과자
LIKE '과자%' # 맨앞에 '과자~'가 포함하면 모두 추출 ex) 과자세트
LIKE '_과자_' # '과자' 앞뒤로 _의 갯수만큼 문자만 들어가는 것 추출 ex) 큰과자1
LIKE '%과자_' # %과 _ 같이 사용 가능 ex) 초코과자1
# SQL 연산자 사용한 쿼리 예시
SELECT InvoiceId, InvoiceDate, BillingCity, BillingCountry, Total
FROM Invoice
WHERE InvoiceDate BETWEEN '2007-01-01' AND '2007-03-31' #날짜조건
AND BillingCountry IN ('USA','France') #list에 포함되는 값
AND BillingCity LIKE '%s%' #'s'가 포함된 값
AND Total IS NOT NULL #Total이 NULL이 아닌 값
5. 논리 연산자
AND # 이전 조건을 충족해야 됨
OR # 이전 조건 중 하나만 충족되도 됨
NOT # 뒤에 오는 조건에 반대되는 결과
# 처리순서
( ) , NOT , AND , OR
# OR 연산자를 사용할 때는 조건 범위에 맞춰 괄호( )를 사용해 줘야 한다.
SELECT InvoiceId, InvoiceDate, BillingCity, BillingCountry, Total
FROM Invoice
WHERE InvoiceDate BETWEEN '2007-01-01' AND '2007-03-31' #날짜조건
AND (BillingCountry IN ('USA','France') OR BillingCountry ='Germany') #OR 사용
6. 부정 연산자
# 부정 논리 연산자 종류 (= 같이 않다.)
!=
^=
<>
NOT 컬럼1 =
# 부정 SQL 연산자 종류
NOT BETWEEN 값1 AND 값2 # 값1 과 값2 사이에 없는 값
NOT IN (list) # list에 없는 값
IS NOT NULL # NULL이 아닌 값
# 부정 연산자 사용하기
SELECT InvoiceId, InvoiceDate, BillingCity, BillingCountry, Total
FROM Invoice
WHERE InvoiceId BETWEEN 1 AND 30 # InvoiceId가 1에서 30사이 값
AND InvoiceDate NOT BETWEEN '2007-01-01' AND '2007-03-31' #해당 날짜가 아닌 값
AND BillingCountry NOT IN ('USA','France') #USA와 France가 아닌 값
AND BillingCountry != 'Norway' #Norway가 아닌 값
AND Total IS NOT NULL
7. ROWNUM, TOP 사용
# 추출되는 ROW(행) 수 조절
# TOP 사용
SELECT TOP 10 컬럼1
FROM 테이블명;
# LIMIT 사용
SELECT 컬럼1
FROM 테이블명
LIMIT 10;
'SQL > SQLD (개발자)' 카테고리의 다른 글
2-1. SQL 기본_(7)GROUP BY, HAVING 절 (0) | 2021.08.29 |
---|---|
2-1. SQL 기본_(6)함수(FUNCTION) (0) | 2021.08.26 |
2-1. SQL 기본_(4)TCL(TRANSACTION CONTROL LANGUAGE) (0) | 2021.08.24 |
2-1. SQL 기본_(3)DML(DATA MANIPULATION LANGUAGE) (0) | 2021.08.22 |
2-1. SQL 기본_(2)DDL(DATA DEFINITION LANGUAGE) (0) | 2021.08.20 |