자, 이제 우리 SELECT 명령어를 어떻게 쓰는지 이미 알고 있지. 적어도 데이터베이스에서 데이터를 뽑아오고, 필요한 컬럼만 골라서, 쓸모 있는 정보로 바꾸는 쿼리를 만드는 법은 배웠어. 이제 우리 마법 팔레트에 "필터"를 좀 추가해보자. 맞아, 오늘은 데이터 필터링에 대해 얘기할 거고, =, >, <, <> 같은 비교 연산자를 쓸 거야.
큰 테이블을 다룰 때, 사실 모든 데이터를 다 볼 필요는 없잖아(혼돈에 빠지고 싶지 않다면 말이지). 필요한 행만 뽑으려면 SQL에서 WHERE라는 키워드를 써. 이건 각 행이 쿼리 결과에 포함되려면 어떤 조건을 만족해야 하는지 정하는 거야. 그리고 이 조건에 비교 연산자를 쓰는 거지.
WHERE로 필터링하는 문법
SELECT 컬럼1, 컬럼2
FROM 테이블
WHERE 조건;
구조는 간단해: FROM 뒤에 WHERE를 붙이고, 행이 만족해야 할 조건을 적는 거야.
예시로 students 테이블에서 데이터 뽑는 걸 보자:
SELECT name, age
FROM students
WHERE age > 18;
이 쿼리는 18살 넘는 학생들(이름과 나이)만 골라줘. 쉽지? 이제 비교 연산자 세계로 들어가보자.
기본 비교 연산자
SQL에는 데이터를 원하는 대로 필터링할 수 있게 도와주는 비교 연산자가 몇 개 있어. 수학에서 본 적 있겠지만, SQL에서는 조금 다를 수도 있으니 정리해볼게. 자주 쓰는 것들 리스트야:
=— 같다.<>— 같지 않다(어떤 DBMS에서는!=도 되지만,<>가 SQL 표준이니까 이걸 쓰는 게 좋아).>— 크다.<— 작다.>=— 크거나 같다.<=— 작거나 같다.
비교 연산자 표
| 연산자 | 의미 | 예시 | 결과 |
|---|---|---|---|
= |
같다 | age = 20 |
나이가 20인 행만 반환 |
<> |
같지 않다 | age <> 20 |
나이가 20이 아닌 행만 반환 |
> |
크다 | age > 18 |
나이가 18보다 큰 행만 반환 |
< |
작다 | age < 18 |
나이가 18보다 작은 행만 반환 |
>= |
크거나 같다 | age >= 18 |
나이가 18 또는 그 이상인 행만 반환 |
<= |
작거나 같다 | age <= 18 |
나이가 18 또는 그 이하인 행만 반환 |
비교 연산자 사용 예시
예시 1: 20살 넘는 학생 뽑기
우리 테이블은 이래:
| id | name | age |
|---|---|---|
| 1 | Alex Lin | 22 |
| 2 | Anna Song | 19 |
| 3 | Otto Art | 21 |
SELECT name, age
FROM students
WHERE age > 20;
여기서 age > 20 조건을 줘서, 20살 넘는 학생만 뽑는 거야. 테이블에 19살 학생이 있어도, 아쉽지만 결과에 안 나와.
결과는 이렇게 나와:
| name | age |
|---|---|
| Alex Lin | 22 |
| Otto Art | 21 |
Anna Song 학생은 19살이라 결과에 없어.
예시 2: 50,000 이상 급여 받는 직원 뽑기
우리 employees 테이블은 이래:
| first_name | last_name | salary |
|---|---|---|
| Julia | Kim | 48000 |
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
SQL 쿼리는 이거야:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;
이 쿼리는 급여가 50,000과 같거나 그 이상인 직원만 뽑아줘. 같아도 포함이야!
| first_name | last_name | salary |
|---|---|---|
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
예시 3: 가격이 100 미만인 상품 뽑기
| product_name | price |
|---|---|
| USB Cable | 85 |
| Wireless Mouse | 150 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
SELECT product_name, price
FROM products
WHERE price < 100;
전자상점이라면, 이 쿼리로 100 미만인 상품만 뽑을 수 있어(예를 들어 "99원 특가!" 같은 이벤트용으로).
| product_name | price |
|---|---|
| USB Cable | 85 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
예시 4: 특정 id를 가진 유저 제외하기
SELECT id, username
FROM users
WHERE id <> 1;
이 쿼리는 id가 1인 유저를 제외하고 모두 뽑아줘. <> 연산자는 "이 값이 아닌 애들 다 줘"라는 뜻이야.
users 테이블:
| id | username |
|---|---|
| 1 | admin |
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
쿼리 결과:
| id | username |
|---|---|
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
비교 연산자 필터링할 때 자주 하는 실수
필터링 쿼리를 처음 쓸 때 실수 많이 해. 여기서 자주 나오는 실수 몇 개 알려줄게:
문제 1: 컬럼 이름 오타
쿼리에서 컬럼 이름을 잘못 쓰면 PostgreSQL이 에러를 내. 예를 들어:
SELECT name, age
FROM students
WHERE ages > 18; -- 에러: "ages" 컬럼 없음
쿼리 쓰기 전에 컬럼 이름 정확히 확인하자.
문제 2: 비교 연산자 잘못 쓰기
초보자들이 연산자를 헷갈려서 실수할 때가 있어. 예를 들어:
SELECT name, age
FROM students
WHERE age => 18; -- 에러: 잘못된 연산자
정확한 문법은 >=이고, =>는 아니야.
문제 3: 없는 값으로 필터링하기
테이블에 없는 값으로 필터링하면 쿼리는 돌아가지만 결과가 비어 있어. 예를 들어:
SELECT name
FROM students
WHERE age = 999; -- 결과: 0행
이건 문법 에러는 아니지만, 데이터가 나올 거라 기대했다면 헷갈릴 수 있어.
실전 활용
비교 연산자로 데이터 필터링하는 건 여러 상황에서 써. 예를 들면:
- 데이터 분석: 예를 들어, 10,000 루피 이상 쓴 고객만 뽑기.
- 리포트: 평균 급여보다 높은 직원만 뽑기.
- 모니터링: 최근 한 달간 활동 안 한 유저 추적하기.
SQL은 거대한 테이블에서 필요한 데이터만 빠르게 뽑을 수 있게 해주고, 비교 연산자는 그 첫걸음이야.
GO TO FULL VERSION