mariadb로 만들어보기

1. 테이블 만들기
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
birth DATE,
PRIMARY KEY (id) );
확인해보기
- SHOW tables;
- DESC users


CREATE TABLE posts(
-> id INT NOT NULL AUTO_INCREMENT,
-> title VARCHAR(30) NOT NULL,
-> content VARCHAR(200) NOT NULL,
-> created_at TIMESTAMP DEFAULT NOW(),
-> PRIMARY KEY(id));
AUTO_INCREMENT : INSERT할 때 입력해주지 않아도 자동으로 ID가 올라간다.
NOT NULL: INSERT할 때 입력하지 않으면 안된다. NULL로 INSERT하면 안된다.

DEFAULT : 값이 안들어올 때, 기본값으로 세팅
- DEFAULT NOW(): INSERT할 때 입력하지 않으면 현재 시간으로 들어간다.
시간
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시간제)
UTC: 한국 시간 -9
DATETIME VS TIMESTAMP
DATETIME은 자동입력이 안되고 TIMESTAMP는 자동입력이 된다.
2. 데이터 삽입하기
INSERT INTO posts (title,content) VALUES ("생활 꿀팁","여행 꿀팁");
- AUTO_INCREMENT인 id는 자동으로 1씩 올라감.
- DEFAULT NOW() 인 created_at은 하나씩 자동으로 현재 시간이 기록됨.

3. 컬럼 추가하기 - 정보 수정하기(UPDATE) , FK 설정
3-1) 수정일자 추가 - update할 때 시각
ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE NOW();

결과는 위와 같다. update될 때의 timestamp가 들어간다.

원래 updated_at은 비어있었기 때문에 현재 시각이 updated_at으로 들어갔다.
update해서 확인해보기
UPDATE posts SET content = "여행 기록" WHERE id = 2;

3-2) user_id 추가 - FK
- 컬럼 추가
ALTER TABLE posts
ADD COLUMN user_id INT;

- user_id를 FK로
ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);

KEY가 MUL로 바뀐 것을 볼 수 있다.
4. JOIN
가상으로 테이블을 만들어서 보여주는 Join
SELECT * FROM posts
LEFT JOIN users
ON posts.user_id = users.id;

참고
INNER JOIN : 교집합
OUTER JOIN : 합집합
LEFT OUTER JOIN
SELECT *
from A LEFT OUTER JOIN B on A.a = B.b;
A의 모든 행과 B의 A와 공통인 행을 뽑는다.
RIGHT OUTER JOIN
SELECT *
from A RIGHT OUTER JOIN B on A.a = B.b;
A에서 B와 공통된 부분과 B의 모든 정보가 포함된다.
FULL OUTER JOIN
MYSQL에서는 지원하지 않는다. UNION으로 공통되지 않은 행은 NULL 처리를 해서 이용해보자.
'타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) > TIL' 카테고리의 다른 글
웹 풀사이클 23일차 - 유효성검사 적용, 미들웨어 next (3) | 2023.12.24 |
---|---|
웹풀사이클 22일차 - workbench로 유튜브 채널, user (0) | 2023.12.23 |
웹풀사이클 20일차 - RDBMS, 연관관계 (0) | 2023.12.20 |
웹풀사이클 18일차 - 객체, 유튜브 채널 api 설계, (2) | 2023.12.17 |
웹풀사이클 17일차 - 핸들러, forEach/find, 예외처리(status), router, 유튜브 회원 api 만들기 (0) | 2023.12.15 |