[SQL] DB 실습 - timestamp, 날짜-시간 타입, FK, JOIN

이어서 ...

 

1. "Board" 스키마 생성

CREATE DATABASE Board;

USE Board;

 

2. 사용자 테이블 생성(복수가 국룰!)

CREATE TABLE users
(
	id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    job VARCHAR(100),
    birth DATE, 
    PRIMARY KEY (id)  
);

💡 AUTO_INCREMENT : 테이블의 새로운 행이 삽입될 때마다, 특정 컬럼(보통 기본 키, Primary Key)의 숫자를 증가시켜 입력시켜줌

ㄴ 입력 실패했을 때에도 값이 올라감  -> auto_increment_lock_mode 설정해주자.

💡 DATE 자료형 : "YYYY-MM-DD" ""붙여 넣으면 알아서 형태대로 넣어줌.

 ㄴ ex) "800123" -> "1980-01-23" (실전에서는 년도 4자리 다 써주자.

 

3. 사용자 데이터 삽입

 - AUTO_INCREMENT 덕에 id값은 넣어주지않음. 

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

INSERT INTO users(name, job, birth)
VALUES ("kim", "student", "2010-01-01");

INSERT INTO users(name, job, birth)
VALUES ("lee", "teacher", "1930-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)
);

💡 TIMESTAMP DEFAULT NOW(); : 현재 시각 저장해줌

 

5. 게시글 데이터 삽입

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

 

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

ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE 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(user_id)
REFERENCES users(id);

💡 (id) 안써도 pk가 자동설정되지만 명시해주는 것이 좋음

💡 MUL : multiple 중복으로 들어갈 수 있음!

 

9.  ❗️조인

SELECT posts.id, title, content, created_at, updated_at, name, job, birth 
FROM posts LEFT
JOIN users ON posts.user_id = users.id;


MySQL (maridadb) 날짜 / 시간 타입

1. DATE

- 날짜만

- YYYY-MM-DD

 

2. DATATIME : 자동입력 X

- 날짜 + 시간

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

 

3. TIME

- 시간

- HH:MM:SS

 

4. TIMESTAMP : 자동입력!

- 날짜 + 시간

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

- 시스템 시간대 정보에 맞게 일시를 저장

- UTC : 한국 시간 - 9


Not Null vs Default

Not Null

- 직접 null로 작성하는 것도 X

 

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

- 공란으로 inser -> Default 설정 해둔 기본 값이 Insert

- null로 입력해서 넣으면 -> null setting

 


adsp 공부가 생각보다 집중이 안돼서

원래 데브코스 강의 -> adsp 공부를 했었는데

순서를 바꿔서 오늘 아침에 adsp 공부부터하고 밤에 강의를 듣기시작했다

훨씬 효율도 나고 좋은 것같다!!

 

그래도 내일 강의가 꽤긴것같던데 오늘보다는 빨리 시작해야겠다..