Node.Js 시간 때 Map 자료구조를 사용해서 배웠던 내용을
이번엔 RDBMS를 이용해서 실습을 하였다.
간단하게 사용자 테이블과 게시글 테이블이 있으며
외래키를 이용해서 어떤 사용자가 게시글을 업로드 했는지
확인하는 실습이다
create database board;
use board;
맨처음 Board라는 이름의 스키마를 생성해준다.
create table users(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
job VARCHAR(100),
birth DATE,
PRIMARY KEY(id)
);
여기서 처음 알게 된 내용은 AUTO_INCREMENT 타입으로
영단어 뜻처럼 따로 값을 넣지 않아도 자동으로 증가시켜준다.
insert into users(name , job , birth) values(
"공유" , "Actor" , 250204
);
insert into users(name , job , birth) values(
"김고은" , "Movie Actor" , 900225
);
insert into users(name , job , birth) values(
"이동욱" , "Monster" , "1839-01-01"
);
create table posts (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(30) NOT NULL,
contents VARCHAR(1000),
create_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY(id)
);
date 타입을 갖는 birth 컬럼에 각각 다른 유형으로 값을 할당시키고
posts 테이블 create_at 컬럼엔 TIMESTAMP 타입을 적용시켰는데
자세한 내용은 mysql 날짜타입 보러가기
insert into posts(title , contents) values(
"게시글1" , "게시글내용11"
);
insert into posts(title , contents) values(
"게시글2" , "게시글내용22"
);
insert into posts(title , contents) values(
"게시글3" , "게시글내용33"
);
insert into posts(title , contents , user_id) values(
"게시글4" , "게시글내용44" , 3
);
alter table posts add column updated_at datetime
default now() on update now();
여기서 주의할 점!!
alter은 컬럼 수정
update는 속성 값 수정이다.
update posts set contents = "updated!" where id = 2;
posts 테이블의 id가 2인 contents컬럼 값을 "updated!"로 변경하겠다는 뜻
alter table posts
add foreign key(user_id)
references users(id);
references는 기본적으로 기본키를 가리키지만
그래도 지정해주는 것이 좋음
select * from posts
left join users
on posts.user_id = users.id;
select posts.id,title,contents,created_at,name,job,birth from posts
left join users
on posts.user_id = users.id;
left join users on posts.user_id = users.id
이거는 users가 posts.user_id = users.id가 같을 때
왼쪽(posts)로 join된다는 뜻
만약 모든 컬럼 내용을 조회한다면 위의 2번째 코드처럼 컬럼을 모두 작성해도 되지만 posts , users로 작성하는 방법도 있음!!
Date
Datetime
Time
Timestamp