Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 블로그

[데이터베이스]WHERE 조건절/LIKE 본문

전공 공부/데이터베이스

[데이터베이스]WHERE 조건절/LIKE

토산인 2022. 12. 8. 11:08

WHERE과 조건식을 이용해 조건에 맞는 데이터를 필터링하여 결과를 가져오는 방법에 대해 알아보자.

 

 

조건절(WHERE)

특정 데이터들을 추출하여 사용하기 위해선 WHERE과 조건식을 사용해 필터링 한다. 

MEMBER 테이블

 

SELECT * FROM MEMBER WHERE M_ID=4;

 

조건식의 결과가 true인 행들만 필터링해 가져온다. 

위의 식은 M_ID가 4인 행들만 가져온다. 

 

조건식에 여러 연산자가 사용된다. 

=, <, >, !=, NOT, <> 등등

(<>는 != 와 동일)

 

범위를 기준으로 행을 찾을 수도 있다.

SELECT * FROM MEMBER 
WHERE M_CREATED_DATETIME BETWEEN '2030-02-02 00:00' AND '2030-02-03 00:00';

위의 질의는 날짜가 2030/2/2과 2030/2/3 사이에 있는 행들을 가져온다. 

BETWEEN a AND b

 

NULL 값을 기준으로 찾을 수도 있다.

SELECT * FROM BOARD 
WHERE BO_MODIFIED_DATETIME IS NULL

이것은 BO_MODIFIED_DATETIME이 null 값인 행을 찾는다는 것을 의미한다.

 

SELECT * FROM BOARD 
WHERE BO_MODIFIED_DATETIME IS NOT NULL

이것은 BO_MODIFIED_DATETIME이 null 값을 가지지 않는 행을 찾는 방법이다. 

 

 

 

 

특정 패턴에 일치하는 데이터 필터링하는 법

LIKE으로 정확한 값으로 데이터를 찾는 게 아니라, 특정한 패턴을 가진 데이터를 필터링 할 수 있다. 

SELECT 칼럼, … FROM 테이블 이름 WHERE 칼럼 LIKE 패턴;

 

위의 MEMBER 테이블에서 만약 성이 '김'씨인 회원을 찾고 싶다면 아래와 같이 작성하면 된다.

SELECT * FROM MEMBER WHERE M_NAME LIKE '김%'

 

이때 %를 와일드 카드라고 하는데, 

% 와일드 카드: 모든 문자, 문자열, 아무것도 없는('') 것을 의미

_ 와일드 카드: 하나의 문자 의미

 

예시로 연필_% 이면 연필이 좋아요, 연필이 자꾸 사라져요 등등이 있다. 

 

 

 

두 개 이상의 조건을 결합해 찾는 방법

a AND b: a와 b가 모드 true인 행을 찾아 반환한다

SELECT * FROM MEMBER 
WHERE M_NAME LIKE '김%' AND M_GENDER='male';

'김'씨 성을 가지고 남성인 회원을 찾는 구문이다. 

 

a OR b: a나 b를 만족하는 행을 찾아 반환한다.

SELECT * FROM FRUIT 
WHERE FT_COLOR = '빨강' OR FT_COLOR = '주황' OR FT_COLOR = '보라';

이는 FT_COLOR가 빨강 또는 주황 또는 보라색인 과일을 찾는 구문이다.

 

OR과 동일한 기능으로 IN이 있다.

SELECT * FROM FRUIT 
WHERE FT_COLOR IN ('빨강', '주황', '보라');

위의 구문도 OR과 동일하게 기능한다. 

 

NOT

SELECT * FROM MEMBER 
WHERE NOT (M_NAME LIKE '김%' AND M_GENDER = 'male');

김씨 성을 가지고 남성이 아닌 회원을 찾는 구문이다.