RDBMS 연습하기

ssomae·2024년 9월 12일

DevCourse

목록 보기
17/29
post-thumbnail

DBMS 실습하기

posts relation

게시글 번호제목내용작성일자수정일자사용자 번호
1A안녕하세요2024-01-012024-01-251
2B반갑습니다2024-01-152024-01-262
3C잘 부탁 드립니다2024-03-132024-03-171
4D2024-04-012024-04-153
5E아니요2024-05-014
6E아니오2024-05-014

users relation

사용자 번호작성자직업생년월일
1PARK영화배우921015
2LEE유튜버901228
3PARK영화배우930501
4CHOI영화배우981123
  1. board DB 생성

    • CREATE DATABASE board;
    • USE board;
  2. 사용자 테이블 생성

    CREATE TABLE users(id INT NOT NULL AUTO_INCREMENT,
        -> name VARCHAR(30) NOT NULL,
        -> job VARCHAR(100),
        -> birth DATE, -> **YYYY-MM-DD 형식으로 저장된다!**
        -> PRIMARY KEY (id));

  1. 사용자 데이터 삽입

    MariaDB [board]> INSERT INTO users(job) VALUES("developer");
    ERROR 1364 (HY000): Field 'name' doesn't have a default value

    제약조건을 지켜줘야한다!

  1. 게시글 테이블 생성
    CREATE TABLE posts(id INT NOT NULL AUTO_INCREMENT,
        -> title VARCHAR(30) NOT NULL,
        -> content VARCHAR(100),
        -> created_at TIMESTAMP DEFAULT NOW(),
        -> PRIMARY KEY (id));
  2. 게시글 데이터 삽입
INSERT INTO posts(title, content) VALUES('title1', 'contsnt1');

  1. 게시글 테이블에 수정일자 추가하기
ALTER TABLE posts ADD COLUMN updated_at DATETIME DEFAULT NOW() ON UPDATE NOW();

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

  1. 게시글 테이블에 작성자 컬럼 FK 추가하고 FK 설정
ALTER TABLE posts ADD COLUMN user_id INT;
ALTER TABLE posts ADD FOREIGN KEY(user_id) REFERENCES users(id);

MUL 의 의미 : 중복이 가능하다. → 제약 조건이 필요할 것 같다.


JOIN

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;

MariaDB 날짜 / 시간 타입

  1. DATE
  • 날짜만
  • YYYY-MM-DD 형식으로 저장된다
  1. DATETIME
  • 날짜 + 시간
  • YYYY-MM-DD HH:MM:SS (24H)
  1. TIME
  • 시간
  • HH:MM:SS
  1. TIMESTAMP : 자동 입력 (default : current_timestamp())
  • 날짜 + 시간
  • YYYY-MM-DD HH:MM:SS (24H)
  • cf : UTC : 한국시간 - 9

Not Null vs Default

Not Null

  • 직접 null 이라고 작성해서 넣는 것도 안된다!

Default

  • 값이 안 들어올 때, 기본 값으로 셋팅
  • 공란으로 insert → Default 설정 해둔 기본 값이 insert
  • 직접 null이라고 작성하면 null로 셋팅

profile
성장해나갈 개발자

0개의 댓글