개발은 처음이라 개발새발

[My SQL] WHERE절의 기본과 BETWEEN...AND, IN 본문

mysql

[My SQL] WHERE절의 기본과 BETWEEN...AND, IN

leon_choi 2022. 10. 2. 17:54
반응형

이번 시간에는 WHERE 절에 대해 알아보겠습니다. WHERE절은 조회하는 결과에 특정한 조건을 줘서 원하는 데이터만 보고 싶을 때 사용하는 구문입니다. 우선 지난 시간에 소개한 SQL의 기본적인 쿼리 구문을 다시 보겠습니다.

####SELECT 구문 기본 구조

SELECT 열 이름
FROM 테이블 이름
WHERE 조건

지난 시간에는 from까지 해봤는데 이번 시간에는 where 조건식에 대해 해보겠습니다. 저는 sqldb의 usertbl에 있는 데이터를 가지고 조건을 입혀 추출해볼건데요. 이름이 '김경호'인 사람의 데이터를 찾아보겠습니다.

use sqldb;
select * from usertbl where name = '김경호';
+--------+--------+-----------+------+---------+---------+--------+------------+
| userid | name   | birthyear | addr | mobile1 | mobile2 | height | mdate      |
+--------+--------+-----------+------+---------+---------+--------+------------+
| KKH    | 김경호 |      1971 | 전남 | 019     | 3333333 |    177 | 2007-07-07 |
+--------+--------+-----------+------+---------+---------+--------+------------+

네 이렇게 김경호의 데이터가 추출된 것을 확인할 수 있습니다. where을 통해 조건을 입혀 추출하는 것이 중요한 이유는 효율성이라고 볼 수 있겠는데요. 만약 usertbl에 데이터가 수백만개가 쌓여 있는데 특정한 조건 없이 테이블만을 불러와 김경호라는 이름으로 된 데이터를 찾는다면 앞이 깜깜해지죠. 그리고 데이터를 효율적으로 다루기 위해서 DB를 만든 건데 이렇게 되면 목적과는 아주 거리가 멀게 됩니다. 그렇기 때문에 where를 통해 조건을 추출하는 것은 굉장히 중요하다고 볼 수 있습니다. where을 통해서는 조건 연산자(이상, 이하)와 관계 연산자(그리고, 또는)를 잘 조합해 좀 더 세밀한 조건을 찾을 수 있습니다.

## 1970년생 이상, 키 182cm이상인 데이터 추출
select userid, name from usertbl where birthyear >= 1970 and height >= 182;
+--------+--------+
| userid | name   |
+--------+--------+
| LSG    | 이승기 |
| SSK    | 성시경 |
+--------+--------+
## 1970년생 이상 또는 키 182cm이상인 데이터 추출
select userid, name from usertbl where birthyear >= 1970 or height >= 182;
+--------+--------+
| userid | name   |
+--------+--------+
| BBK    | 바비킴 |
| EJW    | 은지원 |
| KBS    | 김범수 |
| KKH    | 김경호 |
| LJB    | 임재범 |
| LSG    | 이승기 |
| SSK    | 성시경 |
+--------+--------+

이렇게 and, or이라는 관계 연산자를 통해 2가지 이상의 조건을 적용한 결과를 얻을 수도 있습니다. 근데 이 쿼리를 좀 더 짧게 쓰면 더 편하겠죠? where 구문만 알면 180~183인 사람을 찾을 때 "where height >=180 and <=183;" 이라고 적어야 합니다. 하지만 between...and 구문으로 적으면 보다 간다하게 적을 수 있습니다. 그리고 or의 경우는 in 구문으로 대체해 쓰면 좋습니다. 두 구문의 쿼리 예시는 아래와 같습니다.

select name,height from usertbl where height >= 180 and height <= 183;

##between~and~
select name,height from usertbl where height between 180 and 183;
+--------+--------+
| name   | height |
+--------+--------+
| 임재범 |    182 |
| 이승기 |    182 |
+--------+--------+
select name,addr from usertbl where addr='경남' or addr='전남' or addr ='경북';

## in 구문
select name,addr from usertbl where addr in('경남','전남','경북');
+--------+------+
| name   | addr |
+--------+------+
| 은지원 | 경북 |
| 김범수 | 경남 |
| 김경호 | 전남 |
| 윤종신 | 경남 |
+--------+------+

이렇게 between과 in 구문으로 쓰니 간단하면서도 나름 더 직관적인 쿼리로 보입니다. 다음시간에도 다양한 기본 쿼리에 대해 알아보겠습니다.

반응형

'mysql' 카테고리의 다른 글

[My SQL] 서브쿼리  (2) 2022.10.03
[My SQL] LIKE 연산자 활용하기  (1) 2022.10.02
SELECT문과 My SQL 기초 정리  (1) 2022.09.27
MySQL 트리거 맛보기  (0) 2022.09.10
MySQL 인덱스 활용 맛보기  (1) 2022.09.10