2.13 JOIN

약 6분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

2.13 JOIN

데이터베이스에서 여러 테이블 간의 관계를 통해 데이터를 효과적으로 조회할 수 있는 방법이 바로 JOIN입니다. JOIN은 우리가 관계형 데이터베이스를 사용할 때 꼭 알아야 할 중요한 개념으로, 하나 이상의 테이블에서 데이터를 결합하여 원하는 결과를 얻는 데 사용됩니다. 이 과정에서 각 테이블에서 관련된 정보를 연결하게 됩니다.

이 장에서는 JOIN의 개념을 이해하고, 다양한 JOIN 유형에 대한 실습을 통해 실제 활용 사례를 살펴보겠습니다.

1. JOIN의 개념

JOIN은 데이터베이스의 두 개 이상의 테이블에서 관련된 행을 조합하여 하나의 결과를 만드는 SQL 명령어입니다. JOIN을 사용하면 분산된 데이터를 조합하여 더 풍부한 정보를 얻을 수 있습니다. 예를 들어, 사용자 정보를 담고 있는 users 테이블과 그 사용자의 주문 정보를 담고 있는 orders 테이블이 있을 때, 이 두 테이블을 JOIN하여 특정 사용자의 주문 내역을 조회할 수 있습니다.

2. 예제

필요한 테이블을 만들어보겠습니다. 다음과 같은 두 개의 테이블을 설정하겠습니다.

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    product_name VARCHAR(50),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

예제에서는 users 테이블은 사용자 정보를, orders 테이블은 주문 정보를 저장하고 있습니다. users 테이블의 user_idorders 테이블의 user_id와 연결되어 있습니다.

이제 JOIN을 사용하여 특정 사용자의 주문 정보를 조회하는 예제를 보겠습니다.

SELECT users.username, orders.product_name
FROM users
JOIN orders ON users.user_id = orders.user_id;

3. 실행 결과

이 SQL 문은 사용자와 그들의 주문 정보를 결합하여 다음과 같은 결과를 출력합니다.

username product_name
John Laptop
Jane Smartphone

4. 실습

  1. 위의 usersorders 테이블을 생성하세요.
  2. 사용자의 주문 내역을 추가하세요.
    INSERT INTO users (user_id, username) VALUES (1, 'John'), (2, 'Jane');
    INSERT INTO orders (order_id, user_id, product_name) VALUES (1, 1, 'Laptop'), (2, 2, 'Smartphone');
    
  3. JOIN을 사용하여 모든 사용자의 주문 내역을 조회해 보세요.

5. 프로젝트

여러분의 프로젝트에서는 회원 관리 시스템을 구축하십시오. 사용자가 가입하고, 개별적으로 여러 가지 주문을 할 수 있는 시스템을 구현합니다. 이 시스템을 통해 JOIN을 적극 활용하여 다양한 리포트를 생성합니다.

6. 정리

JOIN은 데이터베이스에서 두 개 이상의 테이블을 연결하여 정보를 조회하는 강력한 도구입니다. 이를 통해 데이터 간의 관계를 효과적으로 활용할 수 있으며, 완전한 정보 조회가 가능해집니다. 다양한 JOIN 기법에 대한 이해가 필요하며, 이를 통해 데이터베이스의 가치를 더욱 높일 수 있습니다.

코드 sql
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    product_name VARCHAR(50),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

INSERT INTO users (user_id, username) VALUES (1, 'John'), (2, 'Jane');
INSERT INTO orders (order_id, user_id, product_name) VALUES (1, 1, 'Laptop'), (2, 2, 'Smartphone');

SELECT users.username, orders.product_name
FROM users
JOIN orders ON users.user_id = orders.user_id;

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.