❄️DB테이블 생성 실습
예시) 게시판
- 'board' 스키마 생성 create
- 사용자 테이블 생성 insert
- 사용자 데이터 삽입 create
- 게시글 테이블 생성 insert
- 게시글 데이터 삽입 create
💢FK는 설정했지만 먹지않는다. 아직 강의를 좀 더 봐야겠다.
create database board;
사용자 테이블
create table users_info (
user_id int auto_increment primary key,
user_name varchar(30) not null,
user_job varchar(100),
user_birth date not null
);
게시글 테이블
create table users_board (
idx int auto_increment primary key,
title varchar(200) not null,
content text not null,
create_at timestamp default current_timestamp,
updatede_at timestamp default current_timestamp on update current_timestamp,
foreign key(user_id) references users_info(user_id)
);
users_info 테이블 생성 후 확인
데이터 insert 후 확인
users_board 테이블 생성 후 확인
데이터 insert 후 확인
MySQL(mariadb) 날짜 / 시간 타입
- DATE
- 날짜만
- YYYY-MM-DD
- DATETIME
- 날짜 + 시간
- YYYY-MM-DD HH:MM:SS (24시간제)
- TIME
- 시간
- HH:MM:SS
- TIMESTAMP : 자동입력
- 날짜 + 시간
- YYYY-MM-DD HH:MM:SS (24시간제)
시스템 시간대 정보에 맞게 일시를 저장한다.
cf. UTC : 한국시간 -9
Not Null vs Default
Not Null
🔸직접 null을 넣는것 안된다.
Default: 값이 안들어올때 기본값으로 세팅
🔸공란으로 insert => Default 설정 해준 기본 값이 insert 된다.
🔸직접 null이라고 작성하면 null setting이 된다.
❄️게시글 테이블에 수정일자 추가하기
ALTER TABLE 테이블명
ADD COLUMN updated_at datetime default now() on update now();
컬럼추가와 데이터 insert 후 확인해보면 컬럼 생성 전에 만든 데이터에
컬럼 생성 시간에 따라 일괄적으로 같은 시간이 입력되었고,
추가적으로 insert한 데이터에는 생성시간과 업데이트 시간이 같이 들어간 것을 확인할 수 있다.
궁금해서 create_at에 0을 넣었더니 0000-00-00 00:00:00으로 삽입되었다.😅 |
여기서 content2에 대한 데이터를 update 해줬을때 업데이트 시간이 갱신된 것을 알 수 있다❗
FK를 할때 아까 user_id가 없다고 말한것은 user_id 컬럼을 추가하고 FK를 따로 설정해줘야 해서 그런것 같다❗
✨컬럼 추가 후 FK설정해주기.
FK설정 후 확인해보면 key에 MUL이라는 값이 들어간 것을 확인할 수 있다.
MUL은 multiple의 약자고, 여러 행이 같은 값을 가질 수 있다는 뜻이다❗
not null 처리를 해주었더니 default가 0으로 들어온다.
✨JOIN 조인
SELECT * FROM users_posts
LEFT JOIN users_info ON users_posts.user_id = users_info.user_id;
join을 사용하여 가상으로 보여주는 테이블
내가 보여주길 원하는 컬럼명만 가지고와서 볼 수 있다❗
💢중간에 users_info에 없는 user_id로 users_posts의 user_id로 사용했을때 테이블에 없는 PK값으로 실패했는데, 그때 id 5가 그냥 건너뛰었다. auto_increment_lock_mode // innodb_autoinc_lock_mode = 0 으로 설정하면 실패해도 숫자 건너뛰기가 안된다고 한다❗ |
'공부 > 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js)' 카테고리의 다른 글
백엔드 심화: 인증과 비동기처리(4)-모듈, es6로 변경-이슈해결 (1) | 2024.09.23 |
---|---|
백엔드 심화: 인증과 비동기처리(4)-워크벤치 처음써보기, FK 설정, TIME_ZONE 설정 (0) | 2024.09.13 |
백엔드 심화: 인증과 비동기처리(1)-데이터베이스란(DB) (0) | 2024.09.11 |
백엔드 기초: Node.js + Express 기본(10)-node.js route().post().get() (0) | 2024.09.10 |
백엔드 기초: Node.js + Express 기본(9)-빈 객체 확인, 채널 설계 (0) | 2024.09.09 |