레슨 4 / 8·20분
데이터 조작 (INSERT, UPDATE, DELETE)
INSERT — 데이터 삽입
INSERT 문은 테이블에 새로운 행을 추가합니다. 단일 행 삽입, 다중 행 삽입, SELECT 결과 삽입 등 다양한 방식을 지원합니다.
sql
-- 단일 행 삽입
INSERT INTO employees (name, department, salary, hire_date)
VALUES ('김철수', '개발팀', 55000, '2024-01-15');
-- 다중 행 삽입
INSERT INTO employees (name, department, salary, hire_date)
VALUES
('이영희', '디자인팀', 48000, '2024-02-01'),
('박민수', '기획팀', 52000, '2024-02-15'),
('최지은', '개발팀', 60000, '2024-03-01');
-- SELECT 결과를 다른 테이블에 삽입
INSERT INTO employee_backup (name, department, salary)
SELECT name, department, salary
FROM employees
WHERE department = '개발팀';UPDATE — 데이터 수정
sql
-- 특정 행 수정
UPDATE employees
SET salary = 58000
WHERE name = '김철수';
-- 여러 열 동시 수정
UPDATE employees
SET salary = salary * 1.1,
department = '시니어개발팀'
WHERE department = '개발팀'
AND hire_date < '2023-01-01';
-- 조건부 수정 (CASE 활용)
UPDATE employees
SET salary = CASE
WHEN department = '개발팀' THEN salary * 1.15
WHEN department = '디자인팀' THEN salary * 1.10
ELSE salary * 1.05
END;DELETE와 TRUNCATE
sql
-- 조건에 맞는 행 삭제
DELETE FROM employees
WHERE department = '퇴사';
-- 서브쿼리로 삭제 대상 지정
DELETE FROM employees
WHERE id NOT IN (
SELECT employee_id FROM active_projects
);
-- TRUNCATE — 테이블 전체 데이터 삭제 (빠름, 롤백 불가)
TRUNCATE TABLE temp_logs;CREATE TABLE과 ALTER TABLE
sql
-- 테이블 생성
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) DEFAULT 0.00,
category VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 테이블 수정
ALTER TABLE products
ADD COLUMN stock INT DEFAULT 0;
ALTER TABLE products
MODIFY COLUMN name VARCHAR(200) NOT NULL;
ALTER TABLE products
DROP COLUMN category;
-- 테이블 삭제
DROP TABLE IF EXISTS temp_products;- •
INSERT INTO ... VALUES— 새로운 행 삽입 - •
INSERT INTO ... SELECT— SELECT 결과를 삽입 - •
UPDATE ... SET ... WHERE— 기존 데이터 수정 (WHERE 필수!) - •
DELETE FROM ... WHERE— 조건에 맞는 행 삭제 - •
TRUNCATE TABLE— 전체 데이터 고속 삭제 (DDL) - •
CREATE TABLE— 테이블 생성,ALTER TABLE— 구조 변경
💡
UPDATE와 DELETE 실행 전에 반드시 WHERE 조건을 확인하세요! WHERE 없이 실행하면 모든 행이 수정/삭제됩니다. 먼저 SELECT로 대상 행을 확인하는 습관을 기르세요.