공부/SQL

SQL 기초 WHERE 절

porkbellyYam 2023. 3. 30. 21:42

BETWEEN

- BETWEEN은 SQL에서 특정 범위 내에 있는 행만 선택 할 수 있는 논리 연산자

- AND 연산자와 쌍을 이루며, 시작값, 끝 값을 포함한다.

 

SELECT *
FROM TABLE1
WHERE NAME BETWEEN CONDITION1 AND CONDITION2;
SELECT *
FROM TABLE2
WHERE NAME >= CONDITION1 AND NAME <= CONDITION2;

위 두 쿼리문은 같은 결과를 도출한다고 볼 수 있다.

 

 

EX)

#숫자 데이터
SELECT * FROM PRODUCTS
WHERE PID BETWEEN 1 AND 20;

#문자열 데이터
SELECT * FROM PRODUCTS
WHERE PNAME BETWEEN 'A' AND 'C';

#날짜 데이터
SELECT * FROM PRODUCTS
WHERE DATE BETWEEN '2023-03-29' AND '2023-03-30';

 

IN

-IN은 결과에 포함시키고자 하는 값 목록을 지정 할 수 있는 SQL의 논리 연산자

- 데이터 유형에 관계 없이 목록의 값은 쉼표로 구분

 

SELECT * FROM TABLE1
WHERE NAME IN('GERNAMY', 'KOREA', 'UNITED STATE', 'JAPAN', 'FRANCE');

 

IS NULL / IS NOT NULL

- 테이블 내에 입력되지 않은 데이터는 NULL로 저장이 되며 'IS NULL' 로 검색 가능

- NULL 값을 검색 할 때는 '=' 연산자가 아니라 'IS NULL' 을 사용해야함

더보기

 SQL 에서 NULL 값은 '알 수 없는 값' 으로 처리됨. 따라서 NULL 값을 다른 값과 비교하는 것은 항상 UNKNOWN을 반환하기 때문 

 

EX_) NULL = NULL 은 FALSE 가 아닌 UNKNOWN을 반환.

 

그래서, NULL 값을 검색 할 때는 '=' 연산자가 아닌 IS NULL 을 사용해야한다.

 반대의 경우 'IS NOT NULL'이라는 연산자?가 있다.

#회원 테이블에 이름이 입력되지 않은 회원들만 조회하려고 할 경우
SELECT * FROM MEMBER
WHERE NAME IS NULL;

#회원 테이블에 이름이 입력된 회원들만 조회하려고 할 경우
SELECT * FROM MEMBER
WHERE NAME IS NOT NULL;

 

LIKE

-WHERE절 안에서 문자열의 일부분을 비교하는 '부분 검색'

- 문자열 비교 연산자를 사용하는 것처럼 졍확하게 일치하지 않아도 사용 가능

 

SELECT COL1, COL2,
FROM TABLE1
WHERE COL LIKE PATTERN;

- 두 가지 와일드 카드 문자를 사용

더보기

'_' 한 글자만을 의미,

'%' : 0글자부터 그 이상을 의미

EX)

WHERE COL1 LIKE 'A%'    // 'A'로 시작하는 모든 값
WHERE COL1 LIKE '%A'	// 'A'로 끝나는 모든 값
WHERE COL1 LIKE '%A%'	// 'A'가 포함되어 있는 모든 값
WHERE COL1 LIKE '_A%'	// 두 번째 인덱스에 'A'이 있는 모든 값
WHERE COL1 LIKE 'A%B'	// 'A'로 시작하여 'B'로 끝나는 모든 값