SQL 외우지마 - (약속)
명령어 : 대문자
테이블 이름 : 첫글자는 대문자
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, // "YYYY-MM_DD"
PRIMARY KEY (id)
);
3. 사용자 데이터 삽입
INSERT INTO users (name, job, birth)
VALUES ("gonhu","actor","800123");
VALUES ("kim","student","100101");
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)
);
5. 게시글 데이터 삽입
INSERT INTO posts (title, content)
VALUES ("title","content");
6. 게시글 테이블에 수정일자 추가
ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE NOW();
- updated_data 추가됨
- null : yes
- extra : on update current_timestamp()
- INSERT INTO posts (title,content) VALUES ("ttitle2", "content2");
- 새로 데이터를 생성할 경우 create 시간과 update 시간이 같음
7. 게시클 테이블 id 2 수정
UPDATE posts
SET title = "title2"
WHERE id =2;
8. 게시글 테이블에 작성자 컬럼 FK 추가
- 우선 posts에 사용자 아디디 컬럼 추가
ALTER TABLE posts
ADD COLUMN user_id INT;
ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);
- MUL : 여러개의 같은 값을 가질 수 있음(중복)
- 게시글은 한 사람이 여러게 작성할 수 있어, 게시글 입장에서는 멀티플임!
- INSERT INTO posts (title,content, user_id) VALUES ("title4, "content4", 3);
- users 테이블에 존재하는 아이디를 posts의 user_id로 넣어 줌
9. JOIN
셀렉트한 테이블을 왼쪽에 붙여 join해줌 / on으로 조건
SELECT * FROM posts LEFT
JOIN users ON posts.user_id = users.id;
- 아이디에 연결된 테이블 보여줌!
- user_id와 id가 겹침 / 또한 보여주는 테이블에 사용자 번호는 딱히 필요가 없음
SELECT posts.id, title, content, created_at, updated_at, name, job, birth FROM posts LEFT
JOIN users ON posts.user_id = users.id;
- 필요한 데이터만 보여줌 확인
auto_increment_lock_mode
실패를 해도 increment 값이 하나씩 올라가는 디폴트
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시간제)
- Default = current_timestamp()
- 시스템 시간대 정보에 맞게 일시를 저장한다.
cf. UTC : 한국시간 - 9
- Not Null vs Default
- Not Null : 직접 null 이라고 작성하는 것도 안됨!
- Default : 값이 안들어올 때, 기본 값으로 셋팅
- 공란으로 insert => Default 설정해둔 값이 insert
- 직접 null 작성해 insert => null 셋팅
'데브코스 > 강의 정리' 카테고리의 다른 글
6주차 db 연동 (1) | 2024.09.23 |
---|---|
5주차 데이터 베이스 GUI, 디비 연동, timezone 설정 (0) | 2024.09.14 |
5주차 백엔드 심화 RDBMS, PK, FK, 테이블간 관계 (0) | 2024.09.11 |
5주차 라우팅, rename, (0) | 2024.09.10 |
5주차 Object.keys(객체이름), 채널 api 설계 (0) | 2024.09.09 |