본문 바로가기

DB와 SQL

Part 2. SQL - DATABASE, TABLE 생성 : DDL(CREATE)

728x90

1. DATABASE 생성 

CREATE DATABASE database_name;

 

2. DATABASE 사용

USE database_name

 

3. TABLE 생성

  1. IF NOT EXISTS : 데이터의 값이 있으면 업데이트, 없으면 새로 만듭니다.
  2. DEFAULT CURRENT_TIMESTAMP : 현재 Timestamp 값을 Insert 시점에 기본값으로 Set 합니다.
  3. AUTO_INCREMENT : 튜플을 추가할 때 마다 자동으로 값이 증가됩니다.
  4. PRIMARY_KEY : 해당 애트리뷰트를 기본키로 지정합니다.
CREATE TABLE IF NOT EXISTS tasks (
    task_id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    start_date DATE,
    due_date DATE,
    status TINYINT NOT NULL,
    priority TINYINT NOT NULL,
    description TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

생성을 마쳤다면 테이블의 구조를 확인해볼 수 있습니다.

 

DESCRIBE : 테이블의 구조 확인 tasks 

DESCRIBE tasks;

실행결과 : 

+-------------+--------------+------+-----+-------------------+-------------------+
| Field       | Type         | Null | Key | Default           | Extra             |
+-------------+--------------+------+-----+-------------------+-------------------+
| task_id     | int          | NO   | PRI | NULL              | auto_increment    |
| title       | varchar(255) | NO   |     | NULL              |                   |
| start_date  | date         | YES  |     | NULL              |                   |
| due_date    | date         | YES  |     | NULL              |                   |
| status      | tinyint      | NO   |     | NULL              |                   |
| priority    | tinyint      | NO   |     | NULL              |                   |
| description | text         | YES  |     | NULL              |                   |
| created_at  | timestamp    | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+-------------+--------------+------+-----+-------------------+-------------------+

 

4. 외래키 기본키가 있는 TABLE 생성

CREATE TABLE IF NOT EXISTS checklists (
    todo_id INT AUTO_INCREMENT,
    task_id INT,
    todo VARCHAR(255) NOT NULL,
    is_completed BOOLEAN NOT NULL DEFAULT FALSE,
    PRIMARY KEY (todo_id , task_id),
    FOREIGN KEY (task_id)
        REFERENCES tasks (task_id)
        ON UPDATE RESTRICT ON DELETE CASCADE
);

 

DESCRIBE : 테이블의 구조 확인

DESCRIBE checklists;

실행결과 : 

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| todo_id      | int          | NO   | PRI | NULL    | auto_increment |
| task_id      | int          | NO   | PRI | NULL    |                |
| todo         | varchar(255) | NO   |     | NULL    |                |
| is_completed | tinyint(1)   | NO   |     | 0       |                |
+--------------+--------------+------+-----+---------+----------------+

결과를 보면 알 수 있듯이 PRIMARY KEY는 todo_id, task_id 입니다.

 

FOREIGN KEY (task_id) 		// (자식 테이블 컬럼 명)
    REFERENCES tasks (task_id) 		// 참조 테이블(부모 테이블 기본키명)
    ON UPDATE RESTRICT 		// 자식 테이블이 참조하고 있을 경우, 업데이트 불가
    ON DELETE CASCADE		// 부모 데이터 삭제 시 자식 데이터도 함께 삭제

 

오늘은 데이터베이스를 생성하고 접속한 후 테이블을 만들고 구조를 확인하는 것을 공부해봤습니다.