1) 가장 먼저 잡아야 할 개념
Table (테이블)
엑셀의 "시트"처럼 같은 성격의 데이터를 모아두는 공간입니다.
Row (행)
한 건의 실제 데이터입니다. 예: 프로젝트 1개
Column (열)
데이터 속성입니다. 예: name, status, created_at
초보자가 가장 많이 헷갈리는 부분은 "테이블 설계"보다 "행과 열 구분"입니다. SQL이 어렵게 느껴질 때는 항상 "지금 내가 다루는 게 행인지 열인지"부터 확인하세요.
2) CRUD를 실제 흐름으로 이해하기
아래 네 줄은 대부분의 서비스에서 가장 많이 실행되는 기본 작업입니다. 순서대로 읽으면 "추가 → 조회 → 수정 → 삭제"가 데이터 생명주기라는 걸 알 수 있습니다.
-- 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이 필요합니다.
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)로 이동