🚀 SQL (DML) 심화 - 테이블 생성 및 관계 설정
SQL에서 테이블을 생성하고 관계를 설정하는 방법을 심층적으로 정리했습니다. 🎯
이 글을 통해 기본적인 테이블 생성부터 관계 설정까지 확실하게 익혀보세요!
📌 1. users 테이블 생성
🔹 개념
- users 테이블은 사용자 정보를 저장하는 기본 테이블입니다.
- user_id는 기본 키(Primary Key) 역할을 하며, 자동 증가(AUTO_INCREMENT) 속성을 가집니다.
✅ users 테이블 생성 SQL
sql
CREATE TABLE users (
user_id INTEGER PRIMARY KEY AUTO_INCREMENT,
username TEXT NOT NULL,
email TEXT NOT NULL
);
✅ 설명
- user_id → 고유번호, 자동 증가(AUTO_INCREMENT)
- username → 사용자 이름, 필수 입력(NOT NULL)
- email → 이메일 주소, 필수 입력(NOT NULL)
💡 테이블 생성 시 주의할 점
- PRIMARY KEY는 각 행을 고유하게 식별해야 하므로 중복을 허용하지 않습니다.
- AUTO_INCREMENT를 설정하면 새로운 행이 추가될 때마다 값이 자동 증가합니다.
📌 2. orders 테이블 생성
🔹 개념
- orders 테이블은 사용자가 주문한 상품 정보를 저장하는 테이블입니다.
- user_id를 사용하여 users 테이블과 관계(Foreign Key)를 설정합니다.
✅ orders 테이블 생성 SQL
sql
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
product_name VARCHAR(255),
quantity INT,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
✅ 설명
- order_id → 주문 ID, 기본 키(Primary Key)
- user_id → 사용자 ID, users 테이블의 user_id를 참조(Foreign Key 설정)
- product_name → 주문한 상품 이름 (VARCHAR(255): 최대 255자)
- quantity → 주문한 상품의 개수
💡 외래 키(Foreign Key) 설정 시 주의할 점
- FOREIGN KEY (user_id) REFERENCES users(user_id)
→ orders.user_id가 users.user_id를 참조하도록 설정 - 참조하는 테이블(users)이 먼저 생성되어 있어야 합니다.
- 참조 무결성을 유지하려면 **사용자가 삭제될 경우 주문도 함께 삭제(ON DELETE CASCADE)**하도록 설정할 수도 있습니다.
📌 3. ON DELETE CASCADE 활용 (옵션 추가)
🔹 개념
- 만약 사용자가 삭제되면 해당 사용자의 주문도 함께 삭제되도록 설정할 수 있습니다.
- 이를 위해 ON DELETE CASCADE 옵션을 추가합니다.
✅ 사용자 삭제 시 해당 사용자의 주문도 삭제되도록 설정
sql
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
product_name VARCHAR(255),
quantity INT,
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);
✅ 설명
- ON DELETE CASCADE를 사용하면 users 테이블에서 사용자가 삭제될 경우 orders 테이블에서도 자동으로 삭제됩니다.
💡 이 설정이 없으면 부모 테이블(users)에서 데이터를 삭제할 때 참조 무결성 오류가 발생할 수 있음!
'Database' 카테고리의 다른 글
Database - Chapter 3-20. SQL (DML) 심화(데이터 조인) (0) | 2025.03.20 |
---|---|
Database - Chapter 3-19. SQL (DML) 심화(파이썬으로 데이터 랜덤 생성) (0) | 2025.03.20 |
Database - Chapter 3-17. SQL (DML) 기초(데이터 제거) (0) | 2025.03.20 |
Database - Chapter 3-16. SQL (DML) 기초(데이터 업데이트) (0) | 2025.03.20 |
Database - Chapter 3-15. SQL (DML) 기초(데이터 조회) (0) | 2025.03.20 |