데이터 베이스 생성
테이블 이름은 기본적으로 복수형으로 작성권장
"Board" 스키마 생성
CREATE DATABASE Board;
USE Board;
사용자 테이블 생성
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
job VARCHAR(100),
birth DATE,
PRIMARY KEY (id)
);
NOT NULL 은 값이 필수로 있어야 한다는 뜻.
AUTO_INCREMENT 는 pk 등에 사용하는데 아이디를 자동으로 생성해준다. 마지막으로 primary key 는 id를 사용한다고 지정해준다.
SHOW tables;
를 하면 생성된 테이블들이 출력되고
DESC users;
를 하면 그 테이블의 정보를 출력해준다.(Describe)
사용자 데이터 삽입
INSERT INTO users(name, job, birth)
VALUES ("gongu", "actor", "800123");
이때 생년월일을 6자리로 입력하면 실제 데이터베이스에는 1980-01-23으로 알아서 맞춰서 들어간다. 하지만 이는 불명확한 표현법이므로 제대로 값을 입력하는것이 권장된다.
INSERT INTO users(name, job, birth)
VALUES ("gongu", "actor", "1980-01-23");
게시글 테이블 생성
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)
);
날짜 컬럼의 이름은 일반적으로 created_at, updated_at 과 같이 사용한다. 날짜를 자동으로 넣어줬으면 좋겠다는 생각이 든다면 Timestamp 기능을 사용한다.
게시글 데이터 삽입
INSERT INTO posts (title, content)
VALUES ("title1", "content1");
게시글 테이블에 수정일자 추가
ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE NOW();
수정 일자는 ON UPDATE NOW()를 추가로 입력해준다.
게시글 테이블 값 수정
UPDATE posts
SET content = "updated!"
WHERE id = 2;
게시글 테이블 작성자 컬럼 FK 추가
ALTER TABLE posts
ADD COLUMN user_id INT;
ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);
DESC로 확인해보면 중간에 MUL 이라는 값이 보인다. MUL은 여러행이 같은 값을 가질 수 있다는 뜻.
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시간제), UTC 시간으로 자동입력
Default
아무값도 안들어오면 그때 넣어줄 값.
Not Null vs Default
Not null은 직접 null 이라고 작성해서 넣는것도 안됨.
Default는 값이 안들어올 때, 기본값으로 셋팅
- 공란으로 insert -> Default 로
- 직접 null 작성하면, null 세팅해줌
JOIN
SELECT 할때 테이블을 붙여서 보여준다.
SELECT * FROM posts
LEFT JOIN users ON posts.user_id = users.id;
LEFT JOIN: select 할 테이블을 왼쪽에 붙이고 조인을 시작한다.
SELECT posts.id, title, content, created_at, updated_at,
name, job, birth FROM posts
LEFT JOIN users ON posts.user_id = users.id;
원하는 컬럼만 선택해서 보여줄 수도 있다. 이때 id 는 users에도 있고 posts에도 있기때문에 어떤 테이블의 id인지 제대로 명시해 주어야한다.
auto_increment_lock_mode 설정
기본 설정은 insert가 실패해도 값이 올라간다. 관심있으면 참고
후기
데이터베이스의 많은것들을 실습한 시간이었다. 테이블 생성, 삽입, 조회부터 조인까지 여러가지를 배울 수 있었다.
키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
'프로그래머스 풀스택 데브코스 > 데브코스 TIL' 카테고리의 다른 글
웹 풀사이클 데브코스 TIL 25일차 (0) | 2023.12.21 |
---|---|
웹 풀사이클 데브코스 TIL 24일차 (0) | 2023.12.20 |
웹 풀사이클 데브코스 TIL 22일차 (0) | 2023.12.18 |
웹 풀사이클 데브코스 TIL 21일차 (0) | 2023.12.16 |
웹 풀사이클 데브코스 TIL 20일차 (0) | 2023.12.14 |