SQL 기초 — CREATE, SELECT, INSERT, UPDATE, DELETE
이 토픽을 마치면
SQL로 테이블을 만들고, 데이터를 넣고, 찾고, 수정하고, 삭제할 수 있습니다.
SQL이란
SQL(Structured Query Language)은 데이터베이스에 질문하는 언어입니다. "프로그래밍 언어"와는 조금 다릅니다 — 반복문이나 함수가 아니라, **"이런 데이터를 줘"**라고 요청하는 선언형 언어입니다.
SQL은 MySQL, PostgreSQL, SQLite 등 대부분의 관계형 데이터베이스에서 사용됩니다. 문법이 거의 동일하므로, 하나를 배우면 다른 것도 쓸 수 있습니다.
CREATE TABLE — 테이블 만들기
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);| 키워드 | 의미 |
|---|---|
INT | 정수 |
VARCHAR(50) | 최대 50자 문자열 |
AUTO_INCREMENT | 자동 증가 (1, 2, 3, ...) |
PRIMARY KEY | 이 행의 고유 식별자 |
NOT NULL | 빈 값 금지 |
DEFAULT | 값을 안 넣으면 이 값 사용 |
테이블은 데이터의 설계도입니다. 한 번 만들면 그 구조에 맞는 데이터만 넣을 수 있습니다.
INSERT — 데이터 넣기
-- 한 행 추가
INSERT INTO users (name, email) VALUES ('김훈', 'hoon@example.com');
-- 여러 행 한 번에 추가
INSERT INTO users (name, email) VALUES
('이수', 'su@example.com'),
('박진', 'jin@example.com');id와 created_at은 지정하지 않았지만, AUTO_INCREMENT와 DEFAULT 덕분에 자동으로 채워집니다.
SELECT — 데이터 읽기
-- 전체 조회
SELECT * FROM users;
-- 특정 열만
SELECT name, email FROM users;
-- 조건 검색
SELECT * FROM users WHERE name = '김훈';
-- 부분 일치 검색
SELECT * FROM users WHERE email LIKE '%@naver.com';
-- 정렬
SELECT * FROM users ORDER BY created_at DESC;
-- 개수 제한
SELECT * FROM users ORDER BY id DESC LIMIT 10;SELECT는 SQL에서 가장 많이 쓰는 명령어입니다. WHERE로 조건을 걸고, ORDER BY로 정렬하고, LIMIT으로 개수를 제한합니다.
*은 "모든 열"을 의미합니다. 편리하지만, 실무에서는 필요한 열만 명시하는 것이 좋습니다 — 불필요한 데이터 전송을 줄이기 위해.
UPDATE — 데이터 수정
-- 특정 사용자의 이메일 변경
UPDATE users SET email = 'new@example.com' WHERE id = 1;
-- 여러 열 동시 수정
UPDATE users SET name = '김훈2', email = 'hoon2@example.com' WHERE id = 1;주의: WHERE 절을 빼면 모든 행이 수정됩니다. 이것은 실수로 일어날 수 있는 가장 위험한 상황 중 하나입니다.
-- 이러면 모든 사용자의 이메일이 바뀐다!
UPDATE users SET email = 'oops@example.com';DELETE — 데이터 삭제
-- 특정 행 삭제
DELETE FROM users WHERE id = 3;
-- 조건에 맞는 여러 행 삭제
DELETE FROM users WHERE created_at < '2025-01-01';UPDATE와 마찬가지로, WHERE 없이 실행하면 테이블 전체가 비워집니다. 복구 불가.
-- 전체 삭제 — 되돌릴 수 없다!
DELETE FROM users;명령어 요약
| 명령 | 목적 | 위험도 |
|---|---|---|
CREATE TABLE | 테이블 구조 정의 | 낮음 |
INSERT | 새 데이터 추가 | 낮음 |
SELECT | 데이터 조회 | 없음 (읽기만) |
UPDATE | 기존 데이터 수정 | ⚠️ WHERE 필수 |
DELETE | 데이터 삭제 | ⚠️ WHERE 필수 |
SQL을 처음 배울 때 기억할 것: SELECT는 안전하고, UPDATE/DELETE는 WHERE가 없으면 재앙이다.