[6주차 02] RDBMS 실습하기

개발냥이·2025년 2월 25일

데브코스

목록 보기
20/75
post-thumbnail

Node.Js 시간 때 Map 자료구조를 사용해서 배웠던 내용을
이번엔 RDBMS를 이용해서 실습을 하였다.

간단하게 사용자 테이블게시글 테이블이 있으며
외래키를 이용해서 어떤 사용자가 게시글을 업로드 했는지
확인하는 실습이다

테이블 생성 순서

1. board 스키마 생성

create database board;
use board;

맨처음 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 타입으로
영단어 뜻처럼 따로 값을 넣지 않아도 자동으로 증가시켜준다.

3. 사용자 데이터 삽입

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"
);

4. 게시글 테이블 생성

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 날짜타입 보러가기

5. 게시글 데이터 삽입

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
);

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

alter table posts add column updated_at datetime 
default now() on update now();

여기서 주의할 점!!
alter은 컬럼 수정
update는 속성 값 수정이다.

7. 게시글 테이블 id 2 수정

update posts set contents = "updated!" where id = 2;

posts 테이블의 id가 2인 contents컬럼 값을 "updated!"로 변경하겠다는 뜻

8. 게시글 테이블에 작성자 컬럼(외래키) 추가하기

alter table posts 
add foreign key(user_id)
references users(id);

references는 기본적으로 기본키를 가리키지만
그래도 지정해주는 것이 좋음

9. view 테이블 만들기 (게시글 + 사용자 테이블)

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로 작성하는 방법도 있음!!


Mysql 날짜 타입

  1. Date

    • 날짜만 저장할 때
    • YYYY-MM-DD
  1. Datetime

    • 날짜 + 시간
    • YYYY-MM-DD HH:MM:SS
  2. Time

    • 시간
    • HH:MM:SS
  3. Timestamp

    • 시스템 시간대 정보에 맞게 일시 저장
    • 날짜 + 시간
    • 자동 저장

Not null vs Default

  • Not Null
    - Null 값 x + 직접 Null 삽입도 불가능
  • Default : 값이 없을 시 기본 값으로 세팅

profile
웹 개발자가 되고픈

0개의 댓글