▣ PART · DB

SQL 핵심 4종

SELECT · INSERT · UPDATE · DELETE

학습 목표

  • SQL 의 핵심 4 가지 명령을 안다
  • WHERE 절의 사용법
  • 기본 JOIN 으로 두 테이블 연결
  • 게시판에 필요한 SQL 80% 를 마스터

🛠️ CRUD — 4 가지로 끝

Create · Read · Update · Delete

모든 데이터 조작은 이 4 가지로 압축됩니다. 본 과정의 게시판도 SQL 책 한 권 안 보고 이 4 개로 만듭니다.

동작SQL
조회SELECT
추가INSERT
수정UPDATE
삭제DELETE

① SELECT — 가장 자주 쓰는 명령


-- 모든 회원 조회
SELECT * FROM mymember;

-- 특정 컬럼만
SELECT id FROM mymember;

-- 조건
SELECT * FROM mymember WHERE id = 'hong';

-- 여러 조건
SELECT * FROM myboard WHERE writer = 'hong' AND num > 1;

-- 정렬
SELECT * FROM myboard ORDER BY num DESC;

-- 개수 제한
SELECT * FROM myboard ORDER BY num DESC LIMIT 10;

-- 개수 세기
SELECT COUNT(*) FROM myboard;

② INSERT — 추가


-- 회원 (모든 컬럼 직접 지정)
INSERT INTO mymember (id, pwd)
VALUES ('hong', 'temp1234');

-- 게시글 (PK num 은 AUTO_INCREMENT 라 생략)
INSERT INTO myboard (title, writer, content)
VALUES ('첫 글', 'hong', '안녕하세요');

-- 여러 행 한 번에
INSERT INTO mymember (id, pwd) VALUES
    ('kim',  'temp1234'),
    ('lee',  'temp1234'),
    ('park', 'temp1234');

👉 AUTO_INCREMENT 컬럼(num)은 안 적으면 자동 부여됨.

③ UPDATE — 수정


-- 한 행 수정
UPDATE mymember
SET pwd = 'newpw'
WHERE id = 'hong';

-- 여러 컬럼
UPDATE myboard
SET title = '수정된 제목', content = '수정된 본문'
WHERE num = 3;
⚠️ WHERE 빠뜨리면 무서움

UPDATE mymember SET pwd = '???';

모든 회원의 비밀번호가 ??? 로. 실무에서 가장 무서운 실수.

④ DELETE — 삭제


-- 한 행
DELETE FROM mymember WHERE id = 'hong';

-- 여러 조건
DELETE FROM myboard
WHERE writer = 'hong' AND num > 100;
⚠️ 더 무서운 실수

DELETE FROM mymember;

모든 회원 삭제. 복구 불가능. WHERE 가 절대 빠지면 안 됨.

WHERE 의 다양한 조건

조건의미
= !=같음 / 다름
> < >= <=크기 비교
AND OR조건 결합
IN (a, b, c)여럿 중 하나
BETWEEN x AND y범위
LIKE '%검색%'문자열 포함
IS NULL IS NOT NULLNULL 검사

JOIN — 두 테이블 연결


-- 게시글 + 작성자 (myboard.writer = mymember.id)
SELECT b.num, b.title, b.writer
FROM myboard b
INNER JOIN mymember m ON b.writer = m.id
ORDER BY b.num DESC;
myboard mymember ┌─────┬───────┬──────┐ ┌──────┬─────┐ │ num │ title │writer│ ←─│ id │ pwd │ │ 1 │첫 글 │ hong │ │ hong │ ... │ └─────┴───────┴──────┘ └──────┴─────┘ │ writer ─────────── id ↓ ↓ 결과: num=1, title="첫 글", writer="hong"

JOIN 의 종류 — 입문 단계

JOIN의미
INNER JOIN양쪽 모두 매칭되는 행만 ⭐ 가장 많이 씀
LEFT JOIN왼쪽 테이블 모든 행 + 매칭되는 오른쪽
RIGHT JOIN오른쪽 테이블 모든 행 + 매칭되는 왼쪽

👉 본 과정에서는 INNER JOIN 만으로 거의 충분.

SELECT 의 흐름

FROM → 어느 테이블에서? JOIN → 다른 테이블 연결 WHERE → 조건 필터 GROUP BY → 묶기 (집계) HAVING → 묶은 결과의 조건 ORDER BY → 정렬 LIMIT → 개수 제한

👉 위 순서로 실행. SQL 작성도 이 순서로.

실전 — 게시판에 자주 쓰는 SQL


-- 게시글 목록 (최신순)
SELECT num, title, writer, content
FROM myboard
ORDER BY num DESC;

-- 페이징 (한 페이지 10 개, 2 페이지)
SELECT num, title, writer, content
FROM myboard
ORDER BY num DESC LIMIT 10 OFFSET 10;

-- 검색
SELECT * FROM myboard WHERE title LIKE '%spring%';

-- 본인 글 개수
SELECT COUNT(*) FROM myboard WHERE writer = #{writer};

-- 게시글 + 작성자 매칭 확인 (JOIN)
SELECT b.num, b.title, b.writer
FROM myboard b
INNER JOIN mymember m ON b.writer = m.id
ORDER BY b.num DESC;

흔한 실수

실수결과
UPDATE 에 WHERE 누락전체 행 수정 (재앙)
DELETE 에 WHERE 누락전체 삭제 (재앙)
JOIN 에 ON 빠뜨림카티전 곱 (모든 조합)
컬럼명 잘못"Unknown column" 에러
따옴표 중첩SQL 문법 오류

안전 습관

  • UPDATE/DELETE 전에 SELECT 먼저 — WHERE 조건 확인
  • 트랜잭션 사용 — 실수 시 ROLLBACK
  • 실 운영 DB 에서 테스트 X
  • BACKUP 정기적으로

🔄 Before / After

전 차시 끝

DB 의 구조는 안다. SQL 은 들어본 정도.

이번 차시 끝

CRUD 4 명령 + JOIN 으로 게시판 SQL 80% 를 직접 짠다.

이번 차시의 데이터 흐름

자바 코드
SELECT/INSERT/
UPDATE/DELETE
DB 데이터
4 가지 SQL 이 모든 데이터 조작의 진입점

정리

오늘 들고 가는 것

  • SQL 4 가지: SELECT · INSERT · UPDATE · DELETE
  • WHERE 절이 행을 지정하는 핵심
  • UPDATE/DELETE 에 WHERE 절대 빠뜨리지 말 것
  • INNER JOIN 으로 두 테이블 연결