수수한 코딩세상

[DB] WHERE 뒤에 조건식 여러개 사용하기 본문

카테고리 없음

[DB] WHERE 뒤에 조건식 여러개 사용하기

수수한 코딩열공생 2024. 6. 20. 15:16
<개발 도구>
DBMS : MySQL
Editor : DBeaver

 

데이터를 필터링할 때 사용하는 WHERE 문 뒤에는 조건식이 오게 됩니다. 조건식 1개만 사용하여 원하는 데이터를 추출할 수 있다면 좋지만, 일반적으로 조건식을 여러 개 사용해야 원하는 데이터를 추출할 수 있는 상황들이 더 많습니다.

WHERE 문 뒤에 조건식을 여러개 사용하는 장법에 대해 정리해 보겠습니다.

 

조건식 여러개 사용하기 (AND / OR)

▶ AND 연산자 사용

SELECT * FROM 테이블명 WHERE 가격=5000 AND 카테고리 = '가구';

AND : 왼쪽 조건식과 오른쪽 조건식이 동시에 맞는 데이터 출력

코드를 예시로 들면 가격이 5000원이면서 카테고리가 가구인 상품 데이터를 추출해 낼 수 있습니다.

 

▶ OR 연산자 사용

SELECT * FROM 테이블명 WHERE 가격=5000 OR 카테고리 = '가구';

OR : 왼쪽 조건식과 오른쪽 조건식 중 적어도 하나가 맞는 데이터 출력

코드를 예시로 들면 가격이 5000원 이거나 카테고리가 가구인 상품 데이터를 추출해 낼 수 있습니다.

 

AND와 OR 연산자를 사용해서 조건식을 2개, 3개 필요한 만큼 논리적으로 서술하여 사용할 수 있습니다.

 

조건식에 괄호 사용

//ex) 카테고리가 가구거나 옷인데 옷의 가격이 5000원인것
SELECT * FROM 테이블명 
WHERE 카테고리 = '가구' OR (카테고리 = '옷' AND 가격 = 5000);

//(괄호)안에 있는것 먼저 연산해줌
SELECT * FROM 테이블명 
WHERE (카테고리 = '가구' OR 카테고리 = '옷') AND 가격 =5000;

(괄호)를 사용하면 괄호 안에 있는 것을 먼저 연산해 주게 됩니다. 이를 이용하여 우선순위 연산을 선정하여 조건식을 정리할 수 있습니다.

 

NOT 연산자

▶ NOT 연산자

SELECT * FROM 테이블명 WHERE NOT 가격 = 5000;

//NOT과 같은 연산기호
SELECT * FROM 테이블명 WHERE 가격 != 5000;

NOT : 수학적으로 역을 뜻함/조건식에 포함되지 않는 제외된 데이터를 출력함

코드를 예시로 들면 가격이 5000원이 아닌 모든 데이터를 출력합니다.

 

▶ 조건식 여러개에 NOT 연산자 사용

//ex) 카테고리가 가구가 아니고 가격이 5000원이 아닌 상품 출력
SELECT * FROM 테이블명 
WHERE NOT 카테고리 ='가구' AND NOT 가격 = 5000;

//같은 코드 (연산자만 다르게 사용)
SELECT * FROM 테이블명 
WHERE 카테고리 !='가구' AND 가격 != 5000;

 

IN 연산자 사용해서 OR 묶기

▶ IN 연산자 사용해서 OR 묶기

ex) 카테고리가 '신발','가전','식품'인 상품 출력
SELECT * FROM 테이블명 
WHERE 카테고리 ='신발' OR 카테고리 ='가전' OR 카테고리='식품';

//위처럼 조건항목이 많아지면 가독성이 떨어져서 IN이라는 연산자를 쓸 수 있다(OR연산자로 묶이는 것에만 사용 가능)
SELECT * FROM 테이블명 
WHERE 컬럼명 IN (값, 값, 값);

//IN 연산자는 컬럼을 하나만 작성할 수 있기 때문에 하나의 컬럼에서 다양한 조건으로 필터링 할때 유용하게 사용함
//IN 연산자가 처리속도가 빠름
SELECT * FROM 테이블명
WHERE 카테고리 IN ('신발', '가전', '식품');

 

이상 WHERE 문 뒤에 조건식을 여러 개 사용하는 방법과 유용한 연산자에 대해 학습한 것을 정리해 보았습니다.

 


Reference

해당 글은 애플코딩님의 강의를 보고 정리한 내용입니다.

https://codingapple.com/course/sql-and-database/

 

한 번에 끝내는 SQL & Database - 코딩애플 온라인 강좌

SQL은 관계형 데이터베이스에서 데이터를 입출력할 때 사용하는 언어입니다.  관계형 데이터베이스를 다루는 곳에서 백엔드 개발 잘하고 싶다면 SQL을 잘 알아두도록 합시다.  실은 SQL을 개발자

codingapple.com