DB 테이블 실습

문소영·2024년 3월 28일

DB 테이블 생성 실습


  1. board 스키마 생성
CREATE DATABASE Board;
USE Board;

  1. 사용자 테이블 생성
CREATE TABLE users(
	id INT NOT NULL AUTO_INCREMENT,
	name VARCHAR(30) NOT NULL,
	job VARCHAR(100),
	birth DATE,
	PRIMARY KEY(id)
)

  1. 사용자 데이터 삽입
INSERT INTO users(name,job,birth)
VALUES("gongu","actor","800123")

  1. 게시글 테이블 생성
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)
)

  1. 게시글 데이터 삽입
INSERT INTO posts(title, content)
VALUES("title1","content1");
  1. 게시글 테이블에 수정일자 컬럼 추가
ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT now()
ON UPDATE NOW();

  1. 게시글 테이블 id2 수정
UPDATE posts
SET content = "updated!"
WHERE id =2;

  1. 게시글 테이블에 작성자 컬럼 FK 추가
ALTER TABLE posts
ADD COLUMN user_id INT;

ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);

  1. 조인
SELECT * FROM posts
LEFT JOIN users ON posts.user_id = users.id;

SELECT posts.id, title, content, created_at, updated_at, 
name, job, birth FROM posts LEFT JOIN
users ON posts.user_id = users.id;

MYSQL(mariadb) 날짜 / 시간 타입


  1. DATE
  • 날짜만
  • YYYY-MM-DD
  1. DATETIME(자동입력 안됨)
  • 날짜 + 시간
  • YYYY-MM-DD HH:MM:SS(24시간제)
  1. TIME
  • 시간
  • HH:MM:SS
  1. TIMESTAMP(자동입력 가능)
  • 날짜 + 시간
  • YYYY-MM-DD HH:MM:SS(24시간제)
    시스템 시간대 정보에 맞게 일시를 저장한다.

cf. UTC : 한국 시간 - 9(국제 표준시)

Not Null vs Default


  1. Not Null
  • 직접 Null을 삽입할 수 없음.
  1. Default : 값이 안 들어올 때, 기본 값으로 세팅
  • 공란으로 insert ⇒ Default 설정 해둔 기본 값이 insert
  • 여러분들이 직접 null 이라고 작성해서 넣으면, null setting

0개의 댓글