껄껄껄
코딩무새입니다.
MySQL의 WHERE 구문입니다.
포스팅하려니 머리가 아프군요.
하지만 포스팅합니다.
WHERE 절이란?
MySQL에서 WHERE 절은 특정 조건을 만족하는 행만 선택하는 데 사용되지요.
SELECT, UPDATE, DELETE 문과 함께 사용하여 원하는 데이터를 필터링할 수 있습니다.
조건을 지정하는 방법이 너무도 많은데요.
비교 연산자, 논리 연산자, IN, LIKE 등 여러 방법이 있습니다.
기본 문법
SELECT로 예시를 들어봅니다.
SELECT - FROM 이후 WHERE 다음 원하는 조건을 추가합니다.
SELECT {COLUMN1}, {COLUMN2}
FROM {TABLE_NAME}
WHERE {CONDITION};
예제 쿼리를 만들어 보았는데요.
생성일이 1/20일 지난 데이터를 찾는 쿼리입니다.
SELECT *
FROM users
WHERE created_at >= '2025-01-20';
비교 연산자
연산자 | 설명 | 예 |
= | 같은 값 | id = 1 |
!= or <> | 다른 값 | id != 1 |
> | 초과 | id > 5 |
< | 미만 | id < 5 |
>= | 이상 | id >= 5 |
<= | 이하 | id <= 5 |
id 5를 제외한 데이터를 조회하는 예제 쿼리입니다.
SELECT *
FROM users
WHERE id <> 5;
+----+----------+--------------------+--------------------------------------------------------------------+---------------------+---------------------+
| id | username | email | password_hash | created_at | updated_at |
+----+----------+--------------------+--------------------------------------------------------------------+---------------------+---------------------+
| 1 | parrot | parrot@example.com | 3e99b088cbb5b91343516d584699034188b50394005dd5016719378ee9c725e1 | 2025-01-16 20:30:30 | 2025-01-16 20:30:30 |
| 2 | test1 | test1@example.com | ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae | 2025-01-16 20:39:50 | 2025-01-16 20:39:50 |
| 3 | test2 | test2@example.com | 50e49efde4e37d84b97b14ac4f7d03ba956f1413f7367090baeabac67bf69704 | 2025-01-16 20:39:50 | 2025-01-16 20:39:50 |
| 4 | test3 | test3@example.com | 2d0eadfa85a4fb22cfccb3fb3a731a3a74524f7177f4259d920a5bbcffefc040 | 2025-01-16 20:39:50 | 2025-01-16 20:39:50 |
| 6 | bear | bear@jwt.com | bear123de4e37d84b97b14ac4f7d03ba956f1413f7367090baeabac67bf69704 | 2025-01-21 00:43:59 | 2025-01-24 00:44:16 |
| 7 | zip | zip@al.com | zasqwqcfvwryhjnd84b97b14ac4f7d03ba956f1413f7367090baeabac67bf69704 | 2025-01-24 00:44:35 | 2025-01-24 00:44:43 |
+----+----------+--------------------+--------------------------------------------------------------------+---------------------+---------------------+
6 rows in set (0.00 sec)
논리 연산자
AND
조건을 중첩하여 연산시켜 모든 조건이 만족하는 데이터를 가져옵니다.
아래 쿼리를 볼까요?!
id 2 초과 + 5 미만의 조건을 AND 연산자를 사용하여 데이터를 가져왔습니다.
SELECT id, username, email
FROM users
WHERE id > 2 AND id < 5;
+----+----------+-------------------+
| id | username | email |
+----+----------+-------------------+
| 3 | test2 | test2@example.com |
| 4 | test3 | test3@example.com |
+----+----------+-------------------+
2 rows in set (0.00 sec)
OR
여러 조건 중 하나라도 만족하면 데이터를 가져옵니다.
OR 연산자를 사용하여 id 5 초과하거나 4 미만의 데이터를 가져왔습니다.
SELECT id, username, email
FROM users
WHERE id < 4 OR id > 5;
+----+----------+--------------------+
| id | username | email |
+----+----------+--------------------+
| 1 | parrot | parrot@example.com |
| 2 | test1 | test1@example.com |
| 3 | test2 | test2@example.com |
| 6 | bear | bear@jwt.com |
| 7 | zip | zip@al.com |
+----+----------+--------------------+
5 rows in set (0.00 sec)
NOT
특정 조건의 반대되는 조건으로 데이터를 가져옵니다.
아래 쿼리는 username이 'parrot'이 아닌 데이터를 가져오는 쿼리입니다.
SELECT id, username, email
FROM users
WHERE NOT username = 'parrot';
+----+----------+-------------------+
| id | username | email |
+----+----------+-------------------+
| 2 | test1 | test1@example.com |
| 3 | test2 | test2@example.com |
| 4 | test3 | test3@example.com |
| 5 | apt | apt@rose.com |
| 6 | bear | bear@jwt.com |
| 7 | zip | zip@al.com |
+----+----------+-------------------+
6 rows in set (0.00 sec)
그 외 조건
기본적인 조건 외에 다른 방법을 보여드리겠습니다.
여기선 간단히 설명드려볼게요.
IN은 조건 값이 여러 값 중 일치하는 데이터를 가져옵니다.
LIKE는 부분 검색 조건이에요.
SELECT id, username
FROM users
WHERE id IN (1,2,3);
+----+----------+
| id | username |
+----+----------+
| 1 | parrot |
| 2 | test1 |
| 3 | test2 |
+----+----------+
3 rows in set (0.00 sec)
SELECT id, username
FROM users
WHERE username LIKE 'test%';
+----+----------+
| id | username |
+----+----------+
| 2 | test1 |
| 3 | test2 |
| 4 | test3 |
+----+----------+
3 rows in set (0.00 sec)
WHERE 절에 대해서 포스팅해보았습니다.
연산자 관련 내용만 집중적으로 작성했지만, 연산자는 중요합니다.
껄껄껄
'IT무새 > Database' 카테고리의 다른 글
[MySQL] IN 연산자 (3) | 2025.02.06 |
---|---|
[MySQL] Mysql에 CSV 데이터 Import | HeidiSQL (2) | 2025.02.01 |
[MySQL] 데이터 정렬 | ORDER BY (1) | 2025.01.24 |
[MySQL] 테이블 조회 | SELECT (4) | 2025.01.16 |
[MySQL] 데이터 삽입 | INSERT INTO (1) | 2025.01.16 |