일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 파이프라인
- 데이터베이스
- 웹
- 리액트
- 예외처리
- 깃
- 자바스크립트
- js
- 브랜치
- 객체
- Node.js
- API
- var와let과const차이
- 깃허브
- 오픈소스
- npm
- 백준13549번js
- 리팩토링
- 백준13549번
- 좋아요추가
- CS
- 자바
- post
- 백준1654번js
- gui
- Express
- 타입스크립트
- 변수
- 프로그래머스
- 컴퓨터공학
- Today
- Total
Nevertheless
DB 테이블 생성 실습 본문
1. "board" 스키마 생성
CREATE DATABASE board;
USE board;
2. 사용자 테이블 생성
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT, // null 값 안됨, auto_increment 로 id 는 자동으로 올라감
name VARCHAR(30) NOT NULL,
job VARCHAR(100),
birth DATE,
PRIMARY KEY(id)
);
3. 사용자 데이터 삽입
INSERT INTO users(name,job,birth)
VALUES ("gongu","actor","800123");
➡️"800123" 으로 입력했지만, 테이블에는 자동으로 1980-01-23 으로 저장되는 것을 볼 수 있다. 원하지 않는 형식으로 데이터가 들어가는 것을 방지하기 위해서는 날짜 형식을 "1930-01-02" 와 같이 넣는 것이 좋다. (300102 와 같은 형식으로 입력할 경우, 2030-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 ("title1","content1");
➡️ created_at을 입력하지 않았는데, TIMESTMAP 로 형식이 지정되어 있어 자동으로 값이 들어가 있는 것을 확인할 수 있다.
6. 게시글 테이블에 수정일자 추가
ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE NOW();
7. 게시글 테이블 id 2 수정
UPDATE posts
SET content="updated!"
WHERE id=2;
8. 게시글 테이블에 작성자 컬럼 FK 추가
ALTER TABLE posts
ADD COLUMN user_id INT;
ALTER TABLE posts
ADD FOREIGN KEY(id)
REFERENCES users(id);
➡️ MUL 은 MULTIPLE 이라는 뜻, 게시글 테이블에는 사용자 번호가 중복될 수 있기 때문이다.
⭐ 9. 조인
SELECT * FROM posts
LEFT JOIN users ON posts.user_id = users.id;
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시간제)
: 시스템 시간대 정보에 맞게 일시를 저장한다.
cf. UTC : 한국 시간 -9
Not Null vs Default
Not Null
: 직접 null 이라고 작성해서 넣는 것도 안됨
Default
: 값이 안들어올 때, 기본 값으로 셋팅
: 직접 null 이라고 작성해서 넣으면, null 이 셋팅
🌟 배운 점
오늘은 데이터베이스 테이블 생성 실습을 했다. 아직은 SQL 문이 익숙하지 않아서 삽입하고, 수정할 때 헷갈리는 경우가 많다. 오늘 강의를 통해서 테이블을 설계할 때 사용하는 속성인 auto_increment 와 timestamp 에 대해 새롭게 배웠다. 이전에 학교에서 데이터베이스를 배웠음에도 이번에 처음 알게 된 것 같다. SQL 문에 익숙해질 수 있도록 복습을 해야겠다.
'데브코스' 카테고리의 다른 글
데이터베이스 연동하기 (0) | 2024.09.23 |
---|---|
DB 테이블 생성 실습(GUI) (0) | 2024.09.13 |
RDBMS (2) | 2024.09.11 |
Express 구조 (0) | 2024.09.10 |
채널 api 수정(+ router) (0) | 2024.09.10 |