MySQL WHERE 절의 다양한 연산자
사용 준비
사용자 테이블을 생성하고 데이터를 삽입합니다.
-- 사용자 테이블 생성
CREATE TABLE user_info (
uid INT AUTO_INCREMENT PRIMARY KEY,
uname VARCHAR(255),
uage INT,
uprofession VARCHAR(255),
ulocation VARCHAR(255)
);
-- 데이터 삽입
INSERT INTO user_info (uid, uname, uage, uprofession, ulocation)
VALUES
(NULL, '김철수', 18, '고등학생', '서울'),
(NULL, '박영희', 19, '대학생', '서울'),
(NULL, '최민수', 20, '대학생', '서울'),
(NULL, '정미숙', 21, '대학생', '인천'),
(NULL, '이성호', 22, '대학생', '인천'),
(NULL, '강진우', 23, '판매원', '인천'),
(NULL, '유지훈', 24, '비즈니스맨', '부산'),
(NULL, '황명자', 25, '프로그래머', '부산'),
(NULL, '남궁민수', 26, '프로그래머', '부산');
1. 논리 연산자
| 기호 |
설명 |
| AND |
두 조건 모두 만족 |
| OR |
하나 이상의 조건 만족 |
| NOT |
조건 부정 |
- AND: 나이가 21세 이상이고 거주지가 '부산'인 경우
SELECT * FROM user_info WHERE uage > 21 AND ulocation = '부산';
- OR: 나이가 21세 이상이거나 거주지가 '부산'인 경우
SELECT * FROM user_info WHERE uage > 21 OR ulocation = '부산';
- NOT: 나이가 21세 이상이 아니거나 거주지가 '인천'이 아닌 경우
SELECT * FROM user_info WHERE NOT uage > 21 AND NOT ulocation = '인천';
2. 비교 연산자
| 기호 |
설명 |
| = |
같음 |
| != |
다름 (일부 SQL 버전에서는 <> 사용) |
| > |
크다 |
| < |
작다 |
| >= |
크거나 같다 |
| <= |
작거나 같다 |
나이(uage) 예제:
SELECT * FROM user_info WHERE uage = 21;
SELECT * FROM user_info WHERE uage != 21;
SELECT * FROM user_info WHERE uage > 21;
SELECT * FROM user_info WHERE uage < 21;
SELECT * FROM user_info WHERE uage >= 21;
SELECT * FROM user_info WHERE uage <= 21;
3. 범위 연산자
| 기호 |
설명 |
| IN |
여러 가능한 값 중 하나 |
| NOT IN |
여러 불가능한 값 중 하나 |
거주지(ulocation) 예제:
SELECT * FROM user_info WHERE ulocation IN ('서울', '부산');
SELECT * FROM user_info WHERE ulocation NOT IN ('서울', '부산');
4. 패턴 매칭 연산자
| 기호 |
설명 |
| LIKE |
특정 패턴 검색 |
| NOT LIKE |
특정 패턴 외 검색 |
| REGEXP |
정규표현식 일치 |
| NOT REGEXP |
정규표현식 불일치 |
SELECT * FROM user_info WHERE ulocation LIKE '%서울%';
- not like: 거주지에 '서울'이 포함되지 않는 경우
SELECT * FROM user_info WHERE ulocation NOT LIKE '%서울%';
- regexp: 거주지에 '서울'이 포함된 경우 (정규 표현식)
SELECT * FROM user_info WHERE ulocation REGEXP '서울';
5. BETWEEN AND 연산자
| 기호 |
설명 |
| BETWEEN AND |
지정된 범위 내의 값 |
| NOT BETWEEN AND |
지정된 범위 외의 값 |
나이(uage) 예제:
SELECT * FROM user_info WHERE uage BETWEEN 20 AND 25;
SELECT * FROM user_info WHERE uage NOT BETWEEN 20 AND 25;
6. NULL 연산자
| 기호 |
설명 |
| IS NULL |
값이 NULL |
| IS NOT NULL |
값이 NULL 아님 |
데이터 추가 후:
INSERT INTO user_info (uid, uname, uage, uprofession, ulocation)
VALUES (NULL, '손흥민', 27, '프로그래머', NULL);
SELECT * FROM user_info WHERE ulocation IS NULL;
- is not null: 거주지가 NULL이 아닌 경우
SELECT * FROM user_info WHERE ulocation IS NOT NULL;