Database - Chapter 2-12. MySQL 데이터베이스 Schema 구성 (DDL)

2025. 3. 19. 15:36·Database

 

🚀 MySQL 데이터베이스 Schema 구성 (DDL)

1️⃣ CREATE TABLE [테이블명] 관련 명령어 ✨

1️⃣ PRIMARY KEY 💡

  • PRIMARY KEY는 테이블의 주요 식별자 역할을 합니다. 이 칼럼은 반드시 고유한 값을 가져야 하며, 테이블 내에서 유일성 및 빠른 검색을 보장합니다.
CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50)
);
  • 이 예시에서 id는 PRIMARY KEY로 지정되어 각 사용자마다 고유한 id 값을 가집니다.

2️⃣ AUTO_INCREMENT 🔢

  • AUTO_INCREMENT는 숫자 자동 증가 속성을 설정하여, 새 레코드가 삽입될 때마다 해당 칼럼의 값이 자동으로 1씩 증가합니다. 주로 id 칼럼에서 사용됩니다.
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50)
);
  • id 칼럼에 AUTO_INCREMENT를 사용하면, 새 레코드 삽입 시 id 값이 자동으로 증가합니다.

3️⃣ NOT NULL ❌

  • NOT NULL 제약은 해당 칼럼에 NULL 값이 들어가는 것을 방지합니다. 즉, 이 칼럼은 반드시 값이 있어야 합니다.
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL
);
  • username 칼럼은 NOT NULL 제약이 걸려 있어 반드시 값이 존재해야 합니다.

4️⃣ UNIQUE 🔑

  • UNIQUE 제약은 해당 칼럼에 중복된 값을 허용하지 않으며, 테이블 내에서 각 값은 고유해야 합니다.
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);
  • email 칼럼에 UNIQUE 제약을 설정하여 중복된 이메일이 저장되지 않도록 합니다.

5️⃣ DEFAULT 🎯

  • DEFAULT 옵션은 새로운 레코드를 삽입할 때, 값이 제공되지 않으면 자동으로 지정된 기본값을 사용합니다.
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    is_business VARCHAR(10) DEFAULT 'False'
);
  • is_business 칼럼에는 기본값으로 'False'가 설정되어 있으며, 값이 제공되지 않으면 자동으로 'False'로 설정됩니다.

6️⃣ CHECK ✅

  • CHECK 제약은 칼럼에 저장될 수 있는 값의 범위나 조건을 지정할 수 있습니다. 예를 들어, 나이가 18세 이상이어야 한다는 제약을 설정할 수 있습니다.
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    is_business VARCHAR(10) DEFAULT 'False',
    age INT CHECK (age >= 18)
);
  • age 칼럼에 CHECK 제약을 추가하여 18세 이상인 사용자만 저장되도록 합니다.

2️⃣ 연습) 2개의 테이블 생성 💻

1️⃣ users 테이블 생성 예시 🧑‍💻

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    name VARCHAR(255),
    age INT
);

INSERT INTO users (user_id, name, age)
VALUES (1, 'Alice', 25),
       (2, 'Bob', 30),
       (3, 'Charlie', 22),
       (4, 'David', 33),
       (5, 'Eve', 28);
  • users 테이블을 생성하고, 여러 사용자의 데이터를 삽입하는 예시입니다.

2️⃣ orders 테이블 생성 예시 📦

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE
);

INSERT INTO orders (order_id, user_id, order_date)
VALUES (101, 1, '2023-01-01'),
       (102, 2, '2023-02-01'),
       (103, 1, '2023-02-15'),
       (104, 3, '2023-03-01'),
       (105, 4, '2023-03-10');
  • orders 테이블을 생성하고, 각 사용자의 주문 데이터를 삽입하는 예시입니다.

3️⃣ 테이블 관계 설정 (JOIN) 🔗

  • 두 테이블 간의 관계를 설정하려면 JOIN 명령어를 사용합니다. 예를 들어, users 테이블과 orders 테이블을 결합하여 특정 사용자의 주문 내역을 확인할 수 있습니다.
SELECT users.name, orders.order_id, orders.order_date
FROM users
JOIN orders ON users.user_id = orders.user_id;
  • 위의 쿼리는 users와 orders 테이블을 user_id를 기준으로 결합하여, 각 사용자의 주문 내역을 출력합니다.

4️⃣ 추가적인 MySQL 명령어 📘

  • ALTER TABLE: 기존 테이블의 구조를 변경할 때 사용합니다.
  • DROP TABLE: 테이블을 삭제할 때 사용합니다.
ALTER TABLE users ADD COLUMN address VARCHAR(255);
  • 기존의 users 테이블에 address 칼럼을 추가하는 예시입니다.
DROP TABLE users;
  • users 테이블을 삭제하는 예시입니다.

위 내용을 기반으로 MySQL의 주요 DDL 명령어와 테이블 구성을 쉽게 이해하고 실전에 적용할 수 있습니다. 테이블을 만들고 관계를 설정하는 기본적인 구조를 다루었으니, 이를 바탕으로 더 복잡한 데이터베이스 설계도 가능합니다. 🚀

'Database' 카테고리의 다른 글

Database - Chapter 3-14. SQL (DML) 기초(테이블생성,테이터생성)  (0) 2025.03.20
Database - Chapter 2-13. MySQL 데이터 타입  (0) 2025.03.19
Database - Chapter 2-11. MySQL User 데이터  (0) 2025.03.19
Database - Chapter 2-7. SQL(Structured Query Language)란?  (0) 2025.03.19
Database - Chapter 1-4. RDBMS?  (0) 2025.03.18
'Database' 카테고리의 다른 글
  • Database - Chapter 3-14. SQL (DML) 기초(테이블생성,테이터생성)
  • Database - Chapter 2-13. MySQL 데이터 타입
  • Database - Chapter 2-11. MySQL User 데이터
  • Database - Chapter 2-7. SQL(Structured Query Language)란?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (807)
      • Python (32)
      • 프로젝트 (116)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (42)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    self-growth
    chinanightlife
    remittance
    뷔
    trumpmuskclash
    americanlaw
    btscomeback
    RM
    btsdischarge
    gpterror
    btsjungkook
    homebartrend
    lawsuitculture
    smartphonedurability
    youngprofessionals
    btsreunion
    bts
    global politics
    livebroadcast
    titaniumcase
    chatgpterror
    classaction
    americaparty
    newpoliticalparty
    life reflection
    college reunions
    basalcellcarcinoma
    travel ban
    hotcoffeecase
    urbantrends
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Database - Chapter 2-12. MySQL 데이터베이스 Schema 구성 (DDL)
상단으로

티스토리툴바