데이터베이스 및 테이블 생성/삭제
기본 CRUD 문법
테이블 구조 수정 (ALTER TABLE)
제약 조건(Constraints)
외래 키(Foreign Key)
트랜잭션(Transaction)과 롤백(Rollback)
CREATE DATABASE example_db;
CREATE DATABASE IF NOT EXISTS example_db;
DROP DATABASE example_db;
snake_case 사용 권장
주석은 -- (한 줄), /* */ (여러 줄)
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SELECT * FROM users;
SELECT * FROM users WHERE id = 1;
INSERT INTO users (name, email) VALUES ('코드잇', 'codeit@example.com');
UPDATE users SET email = 'new@example.com' WHERE id = 1;
DELETE FROM users WHERE id = 1;
DELETE FROM users; -- 모든 데이터 삭제
UPDATE users SET deleted_at = NOW() WHERE id = 1;
ALTER TABLE users ADD COLUMN role VARCHAR(10) DEFAULT 'user';
ALTER TABLE users DROP COLUMN is_active;
CREATE TYPE user_role_enum AS ENUM ('user', 'admin', 'moderator');
ALTER TABLE users ADD COLUMN role user_role_enum NOT NULL DEFAULT 'user';
| 제약 조건 | 설명 | 예시 |
|---|---|---|
NOT NULL | NULL 값 허용 안 함 | 이름, 이메일 등 |
UNIQUE | 중복 허용 안 함 | 주민등록번호 |
PRIMARY KEY | 테이블 고유 식별자 (NOT NULL + UNIQUE) | 사용자 ID |
FOREIGN KEY | 다른 테이블의 PRIMARY KEY 참조 | 주문 → 사용자 ID |
CHECK | 특정 조건 만족해야 함 | 나이 ≥ 0 |
DEFAULT | 값 없을 때 기본값 사용 | 등록일 = 현재시간 |
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE;
| 옵션 | 설명 |
|---|---|
CASCADE | 부모 삭제 시 자식도 삭제 |
SET NULL | 부모 삭제 시 자식 키 NULL 처리 |
RESTRICT (기본값) | 부모 삭제 거부 |
BEGIN;
-- 여러 쿼리 실행
ROLLBACK; -- 문제가 생기면 되돌림
COMMIT; -- 모두 성공 시 확정
-- DB
CREATE DATABASE db_name;
DROP DATABASE db_name;
-- 테이블
CREATE TABLE table_name (...);
DROP TABLE table_name;
-- CRUD
INSERT INTO table (...);
SELECT * FROM table;
UPDATE table SET ... WHERE ...;
DELETE FROM table WHERE ...;
-- ALTER
ALTER TABLE table ADD COLUMN ...;
ALTER TABLE table DROP COLUMN ...;
-- 제약조건
ALTER TABLE table ADD CONSTRAINT constraint_name CHECK (...);
-- 외래키
FOREIGN KEY (col) REFERENCES other_table(id) ON DELETE CASCADE;
-- 트랜잭션
BEGIN;
ROLLBACK;
COMMIT;