DB를 다룰 때 자주 쓰는 CRUD — Create(생성), Read(조회), Update(수정), Delete(삭제)의 기본 문법을 정리한 내용이다. MySQL 기준 예시를 포함하였다.
1. CRUD란
CRUD는 데이터를 만들고(Create), 읽고(Read), 고치고(Update), 지우는(Delete) 네 가지 동작을 말한다. SQL에서는 보통 INSERT, SELECT, UPDATE, DELETE가 각각 대응된다.
flowchart LR
A["Create
INSERT"] B["Read
SELECT"] C["Update
UPDATE"] D["Delete
DELETE"] A --> B B --> C C --> D
INSERT"] B["Read
SELECT"] C["Update
UPDATE"] D["Delete
DELETE"] A --> B B --> C C --> D
2. Create — INSERT
테이블에 새 행(레코드)을 넣을 때 사용한다.
-- 컬럼을 지정해서 넣기 (권장)
INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3)
VALUES ('값1', 123, NOW());
-- 모든 컬럼에 순서대로 넣기 (컬럼 개수·순서가 맞아야 함)
INSERT INTO 테이블명
VALUES (NULL, '값1', 123, NOW());
여러 행을 한 번에 넣을 때는 VALUES를 콤마로 이어서 쓴다.
INSERT INTO 테이블명 (이름, 점수)
VALUES
('홍길동', 90),
('김철수', 85),
('이영희', 78);
3. Read — SELECT
테이블에 있는 데이터를 조회할 때 사용한다.
-- 전체 컬럼, 전체 행
SELECT * FROM 테이블명;
-- 필요한 컬럼만
SELECT 컬럼1, 컬럼2 FROM 테이블명;
-- 조건 걸기 (WHERE)
SELECT * FROM 테이블명 WHERE 컬럼1 = '값';
-- 정렬 (ORDER BY)
SELECT * FROM 테이블명 ORDER BY 컬럼1 DESC, 컬럼2 ASC;
-- 개수 제한 (LIMIT)
SELECT * FROM 테이블명 ORDER BY id DESC LIMIT 10;
조건·정렬·개수 제한을 함께 쓰는 경우가 많다.
SELECT id, 이름, 생성일
FROM 회원
WHERE 상태 = '활성'
ORDER BY 생성일 DESC
LIMIT 20;
4. Update — UPDATE
이미 있는 행의 값을 바꿀 때 사용한다. WHERE를 넣지 않으면 테이블 전체가 바뀌므로 반드시 조건을 넣는 것이 좋다.
-- 한 행만 수정 (보통 primary key로)
UPDATE 테이블명
SET 컬럼1 = '새값', 컬럼2 = 456, 수정일 = NOW()
WHERE id = 1;
-- 조건에 맞는 여러 행 수정
UPDATE 테이블명
SET 상태 = '완료'
WHERE 상태 = '대기' AND 생성일 < '2025-01-01';
5. Delete — DELETE
행을 삭제할 때 사용한다. UPDATE와 마찬가지로 WHERE를 넣지 않으면 전부 삭제되므로 주의해야 한다.
-- 한 행만 삭제
DELETE FROM 테이블명 WHERE id = 1;
-- 조건에 맞는 행만 삭제
DELETE FROM 테이블명 WHERE 상태 = '삭제대기';
실수 방지를 위해 먼저 SELECT로 같은 WHERE 조건으로 몇 건이 나오는지 확인한 뒤 DELETE를 쓰는 것이 좋다.
6. 한 줄 요약
Create는 INSERT INTO … VALUES, Read는 SELECT … FROM … [WHERE] [ORDER BY] [LIMIT], Update는 UPDATE … SET … WHERE, Delete는 DELETE FROM … WHERE. WHERE를 빼먹지 않도록 한다.
댓글 0