본문 바로가기

데브코스

DB 테이블 생성 실습

1. "board" 스키마 생성

CREATE DATABASE board;
USE board;

 

2. 사용자 테이블 생성

CREATE TABLE users(
    id INT NOT NULL  AUTO_INCREMENT, // null 값 안됨, auto_increment 로 id 는 자동으로 올라감
    name VARCHAR(30) NOT NULL,
    job VARCHAR(100),
    birth DATE,
    PRIMARY KEY(id)
);

 

 

3. 사용자 데이터 삽입

INSERT INTO users(name,job,birth)
VALUES ("gongu","actor","800123");

 

➡️"800123" 으로 입력했지만, 테이블에는 자동으로 1980-01-23 으로 저장되는 것을 볼 수 있다. 원하지 않는 형식으로 데이터가 들어가는 것을 방지하기 위해서는 날짜 형식을 "1930-01-02" 와 같이 넣는 것이 좋다. (300102 와 같은 형식으로 입력할 경우, 2030-01-02 와 같이 저장될 수 있음)

 

4. 게시글 테이블 생성

CREATE TABLE posts (
 	id INT NOT NULL AUTO_INCREMENT, 
    title VARCHAR(100) NOT NULL,
    content VARCHAR(2000),
    created_at TIMESTAMP DEFAULT NOW(),
    PRIMARY KEY(id)
);

 

5. 게시글 데이터 삽입

INSERT INTO posts(title,content)
VALUES ("title1","content1");

 

➡️ created_at을 입력하지 않았는데,  TIMESTMAP 로 형식이 지정되어 있어 자동으로 값이 들어가 있는 것을 확인할 수 있다.

 

6. 게시글 테이블에 수정일자 추가

ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE NOW();

 

7. 게시글 테이블 id 2 수정

UPDATE posts
SET content="updated!"
WHERE id=2;

 

8. 게시글 테이블에 작성자 컬럼 FK 추가

ALTER TABLE posts
ADD COLUMN user_id INT;

ALTER TABLE posts
ADD FOREIGN KEY(id)
REFERENCES users(id);

user_id(FK) 컬럼 추가

 

➡️ MUL 은 MULTIPLE 이라는 뜻, 게시글 테이블에는 사용자 번호가 중복될 수 있기 때문이다. 

 

⭐ 9. 조인

SELECT * FROM posts
LEFT JOIN users ON posts.user_id = users.id;


MySQL (mariadb) 날짜 / 시간 타입

1. DATE

: 날짜만

: YYYY-MM-DD

 

2. DATETIME

: 날짜 + 시간

: YYYY-MM-DD HH:MM:SS (24시간제)

 

3. TIME

: 시간

: HH: MM: SS

 

4. TIMESTAMP ( 자동 입력 ) 

: 날짜 + 시간

: YYYY-MM-DD HH:MM:SS (24시간제)

: 시스템 시간대 정보에 맞게 일시를 저장한다. 

   cf. UTC : 한국 시간 -9 

 

Not Null vs Default 

Not Null

: 직접 null 이라고 작성해서 넣는 것도 안됨

 

Default

: 값이 안들어올 때, 기본 값으로 셋팅

: 직접 null 이라고 작성해서 넣으면, null 이 셋팅


🌟 배운 점

오늘은 데이터베이스 테이블 생성 실습을 했다. 아직은 SQL 문이 익숙하지 않아서 삽입하고, 수정할 때 헷갈리는 경우가 많다. 오늘 강의를 통해서 테이블을 설계할 때 사용하는 속성인 auto_increment 와 timestamp 에 대해 새롭게 배웠다. 이전에 학교에서 데이터베이스를 배웠음에도 이번에 처음 알게 된 것 같다. SQL 문에 익숙해질 수 있도록 복습을 해야겠다. 

 

 

'데브코스' 카테고리의 다른 글

데이터베이스 연동하기  (0) 2024.09.23
DB 테이블 생성 실습(GUI)  (0) 2024.09.13
RDBMS  (2) 2024.09.11
Express 구조  (0) 2024.09.10
채널 api 수정(+ router)  (0) 2024.09.10