본문 바로가기
SQL

WHERE문 기초

by 2nyong 2023. 3. 20.

앞서 SELECT문을 통해 데이터를 조회하는 방법에 대해 포스팅하였다. 이번에는 SELECT문에 WHERE절을 추가하여 특정 조건에 부합하는 데이터만 조회하는 방법에 대해 정리한다.

 

- WHERE

우선 SELECT문을 통해 users 테이블의 모든 데이터를 조회한다.

 

SELECT * FROM users;

 

만약 모든 데이터를 조회하고 싶은 것이 아니라, 성이 '이'씨인 데이터에 대해서만 조회하고 싶을 경우 특정 조건에 부합하는 데이터만 조회하도록 WHERE 절을 통해 처리할 수 있다.

 

SELECT * FROM users
WHERE name = '이**';

 

WHERE절에서 사용되는 기본적인 연산자는 대소를 비교할 때 사용되는 [>, <, >=, <=] 가 있으며, 같음을 나타내는 [ = ]와 서로 다름을 나타내는[ !=, <> ]이 있다.

 

기본 연산자를 활용해 point_users 테이블에서 10,000 포인트 이상을 소유한 유저명(user_id) 을 조회할 수 있다.

 

SELECT user_id, point FROM point_users
WHERE point >= 10000;

 

- 논리연산자 (AND, OR)

앞서 비교연산자를 활용한 단일 조건을 통해 10000 포인트 이상을 소유한 유저명을 조회하였다. 그러나 만약 다중 조건을 걸어야 한다면 어떻게 해야 할까? 

 

orders 테이블을 활용해 '앱개발 종합반'을 신청한 수강생 중 '카카오페이'로 강의를 결제한 경우에 대해 AND를 사용하여 조회해보겠다.

SELECT * FROM orders
WHERE course_title = '앱개발 종합반' AND payment_method = 'kakaopay';

 

OR 은 둘 중 하나의 조건에라도 부합하면 조회하는 조건이니 상황에 적절히 사용하면 되겠다.

 

- BETWEEN A AND B

기본적인 비교연산자를 사용할 경우 단방향 비교가 가능했고, 여기에 논리 연산자를 더하면 비교값의 범위 설정이 가능하다.

 

예를 들어, point_users 테이블에서 11,000 포인트 이상 13,000 포인트 이하를 소유한 유저명(user_id) 을 조회할 수 있다.

SELECT user_id, point FROM point_users
WHERE point >= 11000 AND point <= 13000;

 

이는 BETWEEN A AND B 구문을 이용해 다시 아래처럼 쿼리문을 작성할 수 있다.

SELECT user_id, point FROM point_users
WHERE point BETWEEM 10000 AND 15000;

 

조회 결과는 당연히 동일하지만, 이전의 쿼리보다 간결하고 직관적이다.

 

- IN(value1, value2, ...)

BETWEEN A AND B 구문이 AND 문의 연결을 보다 간결하게 나타냈다면, IN 구문은 OR 문의 연결을 보다 간결하고 직관적이게 나타낸다.

 

users 테이블에는 총 54개의 성씨를 가진 유저가 등록되어 있다. 이 중 IN 구문을 사용하지 않고 황, 민, 주씨 성을 가진 유저를 조회해보았다.

SELECT * FROM users
WHERE name = '황**' OR name = '민**' OR name = '주**';

 

이는 IN 구문을 이용해 다시 아래처럼 쿼리를 작성할 수 있다.

SELECT * FROM users
WHERE name IN ('황**', '민**', '주**');

 

조회 결과는 역시 동일하며 OR 문의 나열보다 직관적이고 간결하게 표현할 수 있다.

 

- LIKE

LIKE 문은 특정 패턴에 일치하는 결과값을 조회하는데 사용한다.

 

users 테이블에서 이메일로 Gmail을 사용중인 유저를 조회하였다.

SELECT * FROM users
WHERE email LIKE '%@gmail.com';

 

"%" 기호는 문자가 없거나, 한 개 이상의 어떤 문자도 대체하는 와일드 카드로, 위와 같이 쿼리문을 작성할 경우 Gmail을 사용하는 모든 유저를 조회할 수 있다.

 

'SQL' 카테고리의 다른 글

JOIN(INNER, LEFT) 기초  (2) 2023.03.21
데이터 구조  (0) 2023.03.21
GROUP BY, ORDER BY 기초 및 집계함수  (0) 2023.03.21
SELECT문 기초  (0) 2023.03.20
SQL 이란?  (0) 2023.03.20

댓글