23년 12월 19일 강의를 들은 내용과 추가로 학습한 내용을 기록한 글입니다.
실습 - DB 테이블 생성해보기 (CLI)
mysql docs
지난시간에 작성했던 게시글 DB 테이블 생성하기
1. “board” 스키마 생성
1
2
3
| CREATE DATABASE board;
USE board;
|
2. 사용자 테이블 생성
1
2
3
4
5
6
7
| CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
job VARCHAR(100) ,
birth DATE,
PRIMARY KEY (id)
);
|
1
2
3
| SHOW TABLES;
DESC users;
|
3. 사용자 테이블에 데이터 삽입
1
2
3
4
5
| INSERT INTO users (name,job,birth) values(
'Lee Kwang-Soo',
'actor',
'1985-07-14'
)
|
4. 게시글 테이블 생성
- TIMESTAMP: 기본 날짜형을 확장한 자료형
DEFAULT CURRENT_TIMESTAMP
1
2
3
4
5
6
7
| CREATE TABLE posts (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
contents VARCHAR(2000) ,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
|
1
2
3
| SHOW TABLES;
DESC posts;
|
5. 게시글 테이블에 데이터 삽입
1
2
3
4
| INSERT INTO posts (title,contents) values(
'나는 개그맨',
'이 아니라 배우입니다',
);
|
5. 게시글 테이블에 수정일자 추가
1
2
3
4
| ALTER TABLE posts
ADD COLUMN updateAt DATETIME
DEFAULT NOW()
ON UPDATE NOW();
|
7. 게시글 테이블 id 2 수정
UPDATE posts
SET content = "updated"
WHERE id = 2;
8. 게시글 테이블에 작성자 컬럼 FK 추가
1
2
| ALTER TABLE posts
ADD COLUMN user_id INT NOT NULL;
|
1
2
3
| ALTER TABLE posts
ADD FOREIGN KEY (user_id)
REFERENCES users (id)
|
결과
9. JOIN()
두 개의 테이블을 묶어서 하나의 결과를 출력하는 명령어
- 게시글의 사용자 번호와 사용자의 사용자 번호가 같으면
join()
해 줘
1
2
| select * from posts LEFT
JOIN users ON posts.user_id = users.id
|
결과
1
2
| select (posts.id, title, content,createdAt,updatedAt, name,job,birth) from posts LEFT
JOIN users ON posts.user_id = users.id
|
결과
학습한 내용 정리
MYSQL 날짜/시간 타입
■ DATE
■ DATETIME
- 날짜 + 시간
- YYYY-MM-DD HH:MM:SS (24시간)
■ TIME
■ TIMESTAMP
- 날짜+시간
- 시스템 시간대 정보에 맞게 일시를 저장
- YYYY-MM-DD HH:MM:SS (24시간)
DateTime vs TIMESTAMP
DATETIME | TIMESTAMP |
---|
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 사이의 데이터를 지원 | 1970-01-01 00:00:01 ~ 2038-01-19 08:44:07까지의 데이터만 지원 |
변환되어 저장하지 않음 | 현재 시각 → UTC 시각으로 변환되어 저장 |
문자형 | 숫자형 |
8byte | 4byte |
날짜 직접 입력 | 자동 입력 가능 (CURRENT_TIMESTAMP) |
※ UTC 시각 : 한국 시간 -9
NOT NULL, DEFAULT
NOT NULL
DEFAULT
- 값이 안들어올 때, 기본값으로 세팅
- DEFAULT를 사용하고 싶다면 공란으로 작성
- NULL을 작성하면 기본값으로 세팅되지 않고 NULL이 세팅됨
JOIN
두 개의 테이블을 묶어서 하나의 결과를 출력하는 명령어
두개의 테이블을 조인하기 위해서는 기본키(PK), 외래키 (FK)관계로 맺어져 있어야한다.
- INNER JOIN (내부 조인): 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
- OUTER JOIN (외부 조인): 1개의 테이블에만 데이터가 있어도 결과가 나온다.
- CROSS JOIN (상호조인): 한쪽 테이블의 모든 ㅎ애과 다른 쪽 테이블의 모든 행을 조인한다.
- SELF JOIN (자체조인): 자신이 자신과 조인한다.
참고 사이트