데이터 조작
데이터 조작 (Data Manipulation)
지난 장(Chapter 5)에서 데이터를 담을 테이블과 구조를 만드는 법을 배웠죠. 이제 그 테이블에 실제 데이터를 채우고, 필요할 때 고치고, 지우는 일이 남았어요. 이 페이지에서는 PostgreSQL에서 데이터를 삽입(insert), 수정(update), 삭제(delete) 하는 기본적인 데이터 조작(DML, Data Manipulation Language)을 개괄적으로 다룰게요. 그리고 수정된 행의 값을 돌려받는 RETURNING까지 함께 살펴보면, 앞으로 쿼리를 쓰는 장(Chapter 7)으로 자연스럽게 넘어갈 준비가 돼요.
데이터 삽입하기 (Inserting Data)
테이블에 행을 추가하는 기본 명령은 INSERT예요. 한 번에 한 행씩 넣을 수도 있고, 여러 행이나 다른 쿼리의 결과를 한꺼번에 넣을 수도 있어요.
-- 한 행 삽입
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);
-- 컬럼 나열 없이, 모든 컬럼 순서대로 삽입
INSERT INTO products VALUES (2, 'Bread', 1.50);
-- 여러 행을 한 번에 삽입
INSERT INTO products (product_no, name, price)
VALUES
(3, 'Milk', 2.00),
(4, 'Eggs', 3.20);
컬럼을 생략하면 그 컬럼은 기본값(NULL 또는 정의된 기본값)으로 채워져요. 자세한 규칙은 Section 6.1. Inserting Data에서 다룹니다.
데이터 수정하기 (Updating Data)
기존 행의 값을 바꾸려면 UPDATE를 써요. 어느 행을 고칠지는 WHERE 조건으로 정합니다.
UPDATE products SET price = price * 1.10;
WHERE를 빼면 테이블의 모든 행이 바뀌기 때문에 조심해야 해요. "오늘보다 비싼 상품만 인상한다"처럼 조건을 걸면 특정 행만 고쳐집니다.
UPDATE products SET price = price * 1.10 WHERE price < 5.00;
데이터 삭제하기 (Deleting Data)
행을 지우려면 DELETE를 써요. 여기서도 WHERE를 생략하면 모든 행이 삭제되니 주의해야 해요.
-- 일부 행만 삭제
DELETE FROM products WHERE name = 'Bread';
-- 모든 행 삭제
DELETE FROM products;
수정된 행에서 데이터 돌려받기 (Returning Data from Modified Rows)
INSERT, UPDATE, DELETE에 RETURNING 절을 붙이면, 영향을 받은 행의 값을 그 자리에서 돌려받을 수 있어요. 예를 들어 자동 생성된 ID를 따로 쿼리하지 않고 바로 얻고 싶을 때 유용하죠.
-- 삽입한 행의 생성된 ID를 바로 반환
INSERT INTO products (name, price) VALUES ('Butter', 4.50)
RETURNING product_no;
이 기능은 막 수정·삭제한 행이 어떤 값이었는지를 알고 싶을 때 특히 편리해요. 상세는 Section 6.4. Returning Data from Modified Rows에서 다룹니다.
문서 구성 (Table of Contents)
- 6.1. 데이터 삽입 (Inserting Data) —
INSERT. → dml-insert - 6.2. 데이터 수정 (Updating Data) —
UPDATE. → dml-update - 6.3. 데이터 삭제 (Deleting Data) —
DELETE. → dml-delete - 6.4. 수정된 행에서 데이터 돌려받기 (Returning Data from Modified Rows) —
RETURNING. → dml-returning