공부/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'로 끝나는 모든 값