CS/데이터베이스

[ 생활코딩 DB & MySQL ] 섹션 6, 7 + 실습

은솜솜솜 2025. 3. 30. 19:14
728x90

 

🔍 관계형 데이터베이스의 필요성

데이터의 중복 ▶ 성능, 유지보수에 안좋은 영향. ( 저장 공간 낭비, 데이터 일관성 유지 어려움, 데이터 갱신 시 오류 발생 )

 

→ 중복을 피하기 위해 데이터를 테이블로 분리하여 저장

다만, 분리하게 되면 조회 시에 불편함. →  JOIN 구문 등을 활용해 한 눈에 데이터를 조회 !

 


 

🔍 JOIN

join >>> 데이터 중복을 제거하고 관리 효율성을 높임. 

SELECT t.id, title, description, created, name, profile 
FROM topic AS t
LEFT JOIN author ON t.author_id = author.id;

 

 

+ JOIN의 유형

 

 


 

 

📝 실습

1. passengers 생성 및 삽입

CREATE TABLE passengers (
    passenger_id INT PRIMARY KEY,
    last_name VARCHAR(255),
    first_name VARCHAR(255),
    nationality VARCHAR(255),
    plane INT
);

INSERT INTO passengers (passenger_id, last_name, first_name, nationality, plane) VALUES
(1, '김', '퍼비', '한국', 1),
(2, 'Smith', 'Oliver', '호주', 4),
(3, '최', '빈', '한국', 3),
(4, '미야와키', '사쿠라', '일본', 1),
(5, '이', '이펍', '한국', 2),
(6, 'Williams', 'Noah', '영국', 3);

SELECT * FROM passengers;

 

 

 

2. plane 생성 및 삽입

CREATE TABLE plane (
    plane_id INT PRIMARY KEY,
    departure VARCHAR(255),
    arrival VARCHAR(255),
    departure_time DATETIME,
    gate INT,
    meal BOOLEAN
);

INSERT INTO plane (plane_id, departure, arrival, departure_time, gate, meal) VALUES
(1, '서울', '로마', '2023-03-30 12:10:00', 57, 1),
(2, '서울', '오사카', '2023-04-14 09:35:00', 9, 0),
(3, '런던', '파리', '2023-07-02 19:00:00', 26, 0),
(4, '시드니', '뉴욕', '2023-12-24 14:55:00', 144, 1);

 

 

 

3. JOIN

SELECT 
    p.passenger_id, 
    p.last_name, 
    p.first_name, 
    p.nationality, 
    pl.departure, 
    pl.arrival, 
    pl.departure_time, 
    pl.gate, 
    pl.meal
FROM 
    passengers p
JOIN 
    plane pl ON p.plane = pl.plane_id;

 

728x90