SQLSQL 기초강의 8개 중 2번째난이도 입문

SELECT 기초 — 원하는 데이터 조회하기

발행 읽는 시간 약 1 분

  • SQL
  • SELECT
  • WHERE
  • ORDER BY
  • LIMIT
  • LIKE

강의 소개

WHERE로 조건 필터링, ORDER BY로 정렬, LIMIT으로 개수 제한하는 방법을 배웁니다. LIKE, IN, BETWEEN 등 다양한 조건 연산자도 익힙니다.

실습 데이터 준비#

SQL
CREATE TABLE employees (
    id         SERIAL PRIMARY KEY,
    name       VARCHAR(100) NOT NULL,
    department VARCHAR(50),
    salary     INTEGER,
    hire_date  DATE,
    is_active  BOOLEAN DEFAULT TRUE
);

INSERT INTO employees (name, department, salary, hire_date) VALUES
    ('김철수', '개발팀', 5000000, '2021-03-15'),
    ('이영희', '마케팅팀', 4200000, '2020-07-01'),
    ('박민준', '개발팀', 6500000, '2019-01-20'),
    ('최지수', '디자인팀', 4800000, '2022-05-10'),
    ('정태양', '개발팀', 5800000, '2020-11-30'),
    ('한소희', '마케팅팀', 3900000, '2023-02-14');

WHERE: 조건 필터링#

SQL
-- 개발팀만 조회
SELECT * FROM employees
WHERE department = '개발팀';

-- 급여 500만 이상
SELECT name, salary FROM employees
WHERE salary >= 5000000;

-- 두 조건 모두 (AND)
SELECT name, department, salary FROM employees
WHERE department = '개발팀' AND salary >= 5500000;

-- 둘 중 하나 (OR)
SELECT * FROM employees
WHERE department = '개발팀' OR department = '디자인팀';

-- 부정 (NOT)
SELECT * FROM employees
WHERE NOT department = '마케팅팀';

비교 연산자#

SQL
-- =  같음
-- != 또는 <>  다름
-- >  초과
-- >= 이상
-- <  미만
-- <= 이하

SELECT * FROM employees WHERE salary != 5000000;
SELECT * FROM employees WHERE hire_date > '2022-01-01';

BETWEEN: 범위 조건#

SQL
-- 급여 400만 ~ 550만
SELECT name, salary FROM employees
WHERE salary BETWEEN 4000000 AND 5500000;

-- 날짜 범위
SELECT * FROM employees
WHERE hire_date BETWEEN '2020-01-01' AND '2021-12-31';

IN: 목록 조건#

SQL
-- 특정 부서들
SELECT * FROM employees
WHERE department IN ('개발팀', '디자인팀');

-- 부정
SELECT * FROM employees
WHERE department NOT IN ('마케팅팀');

LIKE: 패턴 검색#

SQL
-- % : 0개 이상의 문자
SELECT * FROM employees WHERE name LIKE '김%';      -- '김'으로 시작
SELECT * FROM employees WHERE name LIKE '%수';      -- '수'로 끝
SELECT * FROM employees WHERE name LIKE '%철%';    -- '철' 포함

-- _ : 정확히 1개의 문자
SELECT * FROM employees WHERE name LIKE '김_수';   -- '김'+'한글자'+'수'

NULL 처리#

SQL
-- NULL 확인 (= NULL은 동작 안 함!)
SELECT * FROM employees WHERE department IS NULL;
SELECT * FROM employees WHERE department IS NOT NULL;

-- COALESCE: NULL 대체값
SELECT name, COALESCE(department, '미배정') AS dept
FROM employees;

ORDER BY: 정렬#

SQL
-- 오름차순 (기본값 ASC)
SELECT name, salary FROM employees
ORDER BY salary;

-- 내림차순
SELECT name, salary FROM employees
ORDER BY salary DESC;

-- 여러 열 정렬
SELECT name, department, salary FROM employees
ORDER BY department ASC, salary DESC;

LIMIT과 OFFSET: 페이지네이션#

SQL
-- 상위 3건만
SELECT * FROM employees ORDER BY salary DESC LIMIT 3;

-- 페이지네이션 (페이지당 2건, 2페이지)
-- 건너뛸 행 수 = (페이지 번호 - 1) × 페이지 크기
SELECT * FROM employees ORDER BY id LIMIT 2 OFFSET 2;
-- 페이지 1: OFFSET 0
-- 페이지 2: OFFSET 2
-- 페이지 3: OFFSET 4

DISTINCT: 중복 제거#

SQL
-- 부서 목록 (중복 없이)
SELECT DISTINCT department FROM employees;

-- 결과
-- 개발팀
-- 마케팅팀
-- 디자인팀

정리#

절역할
SELECT조회할 열 지정
FROM테이블 지정
WHERE행 필터링 조건
ORDER BY정렬 (ASC/DESC)
LIMIT반환 행 수 제한
OFFSET건너뛸 행 수
DISTINCT중복 제거

다음 편에서는 JOIN — 여러 테이블을 연결해서 조회하는 방법을 배웁니다.

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.