Choorai
🌱 Lv.1

SQL Basics

SQL은 데이터베이스와 대화하는 언어입니다. 이 페이지는 "문법 암기"보다 "데이터가 저장/조회/수정/삭제되는 흐름"을 이해하는 데 집중합니다. 처음 배우는 분도 바로 따라할 수 있도록 최소 단위로 나눠 설명합니다.

이 페이지의 학습 목표

  • 테이블(Table), 행(Row), 열(Column) 용어를 정확히 구분
  • CRUD 쿼리를 읽고 직접 작성
  • JOIN과 INDEX가 왜 필요한지 감으로 이해
  • 다음 단계(RDB 설계)로 넘어갈 준비 완료

1) 가장 먼저 잡아야 할 개념

Table (테이블)

엑셀의 "시트"처럼 같은 성격의 데이터를 모아두는 공간입니다.

Row (행)

한 건의 실제 데이터입니다. 예: 프로젝트 1개

Column (열)

데이터 속성입니다. 예: name, status, created_at

초보자가 가장 많이 헷갈리는 부분은 "테이블 설계"보다 "행과 열 구분"입니다. SQL이 어렵게 느껴질 때는 항상 "지금 내가 다루는 게 행인지 열인지"부터 확인하세요.

2) CRUD를 실제 흐름으로 이해하기

아래 네 줄은 대부분의 서비스에서 가장 많이 실행되는 기본 작업입니다. 순서대로 읽으면 "추가 → 조회 → 수정 → 삭제"가 데이터 생명주기라는 걸 알 수 있습니다.

sql
-- C: Create (새 데이터 추가)
INSERT INTO projects (name, status) VALUES ('admin', 'active');

-- R: Read (데이터 조회)
SELECT id, name, status FROM projects WHERE status = 'active';

-- U: Update (기존 데이터 수정)
UPDATE projects SET status = 'archived' WHERE id = 1;

-- D: Delete (데이터 삭제)
DELETE FROM projects WHERE id = 1;

읽는 법 요약

  • INSERT INTO: 어느 테이블에 넣을지 지정
  • SELECT ... FROM: 어떤 컬럼을 어떤 테이블에서 가져올지 지정
  • WHERE: 조건 필터(없으면 전체 대상)
  • UPDATE ... SET: 어떤 값을 어떤 값으로 바꿀지 지정

3) JOIN과 INDEX를 쉽게 이해하기

서비스가 커지면 데이터가 한 테이블에만 있지 않습니다. 사용자 테이블(users)과 프로젝트 테이블(projects)을 연결해서 보여줘야 하므로 JOIN이 필요합니다.

sql
SELECT p.name, u.email
FROM projects p
JOIN users u ON p.owner_id = u.id
WHERE p.status = 'active';

JOIN

서로 다른 테이블을 "공통 키"(예: user_id)로 연결해 하나처럼 조회합니다.

INDEX

책의 목차처럼 원하는 데이터를 빨리 찾도록 도와주는 구조입니다.

4) 초보자가 자주 하는 실수

WHERE 없이 UPDATE/DELETE 실행

조건이 없으면 전체 데이터가 한 번에 바뀌거나 삭제될 수 있습니다.

ID를 문자열/숫자로 혼용

컬럼 타입과 값 타입이 맞지 않으면 비교/조회가 꼬입니다.

체크리스트: 다음 단계로 넘어가기 전

  • CRUD 쿼리를 직접 1회 이상 실행해봤다
  • JOIN 쿼리가 "두 테이블 연결"이라는 것을 이해했다
  • WHERE 없는 UPDATE/DELETE가 위험하다는 걸 알고 있다
  • 준비 완료: RDB (Lv.2)로 이동

마지막 업데이트: 2026년 2월 22일 · 버전: v0.0.1

피드백 보내기

입력한 내용으로 새 이슈 페이지를 엽니다.

GitHub 이슈로 보내기