[DevCamp] Database 실습, JOIN

동건·2025년 2월 25일

DevCamp

목록 보기
18/85
post-thumbnail

📌 Database 실습, JOIN

오늘은 데이터베이스(Database)를 실습하면서
기존에 배웠던 INSERT, SELECT를 더 자세히 사용해보고
JOIN에 대해서도 학습했다.

직접 코드를 작성하고 실행해보았다.


1. "Board" 스키마 생성

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,
    PRIMARY KEY (id)
);


3. 사용자 데이터 삽입

INSERT INTO users (name, job, birth)
VALUES ('gongu', 'actor', '1980-01-23');

INSERT INTO users (name, job, birth)
VALUES ('lee', 'teacher', '1930-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');


6. 게시글 테이블에 수정일자 컬럼 추가

ALTER TABLE posts
ADD COLUMN updated_at DATETIME DEFAULT NOW() ON UPDATE NOW();


7. 게시글 테이블에서 특정 id 수정

UPDATE posts
SET content = 'updated!'
WHERE id = 2;

정상적으로 수정된 모습


8. 게시글 테이블에 작성자 컬럼 추가 및 FK 설정

ALTER TABLE posts
ADD COLUMN user_id INT;

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


9. JOIN 활용

JOIN이란?

JOIN은 여러 개의 테이블을 결합하여 데이터를 조회하는 SQL 연산이다.

관계형 데이터베이스에서는 테이블이 개별적으로 저장되기 때문에,
필요한 데이터를 얻기 위해 여러 테이블을 조합해야 한다.
이때 JOIN을 사용하면 서로 다른 테이블의 데이터를 연결하여 하나의 결과 집합으로 반환할 수 있다.

게시글과 사용자 정보 함께 조회

SELECT posts.id, title, content, created_at, updated_at,
       users.name, users.job, users.birth
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)

NOT NULL vs DEFAULT

  • NOT NULL: 해당 컬럼은 NULL 값을 가질 수 없음.
  • DEFAULT: 값이 입력되지 않을 경우 기본값을 설정함.
    • INSERT 시 값을 입력하지 않으면 기본값이 자동으로 설정됨.
    • 단, NULL을 명시적으로 입력하면 NULL로 저장됨.

🔨 TIL

오늘은 기본적인 테이블 생성, 데이터 삽입 및 조회를 진행하면서
JOIN을 활용하여 여러 테이블의 데이터를 함께 조회하는 방법을 익혔다.
데이터베이스에서 테이블 간 관계를 이해하고,
JOIN을 활용하는 것은 매우 중요한 개념이라고 배웠기 때문에
반복적인 실습을 통해 익숙해져야겠다고 느꼈다.

profile
배고픈 개발자

0개의 댓글