관계형 데이터베이스(2)

minah moon·2023년 8월 28일

PHP

목록 보기
42/58
post-thumbnail

JOIN

join은 하나 이상의 테이블에서 데이터를 요청할 수 있다. 두 테이블의 데이터가 결과 세트의 단일 행에 추가된다.

왼쪽 테이블

쿼리의 주된 대상 테이블

오른쪽 테이블

추가 데이터를 위한 두 번째 테이블

SELECT article.title, article.summary, category.name
FROM article
JOIN category ON article.category_id = category.id;
(WHERE category.id = 1;)
  • SELECT 명령 다음에 데이터를 반환해야 하는 열의 이름이 온다.

  • FROM 명령 다음에 왼쪽 테이블(쿼리의 주된 대상)의 이름이 온다. 여기서는 article 테이블이다.

  • JOIN 절 다음에 오른쪽 테이블(추가 정보를 가지고 있는 테이블)의 이름이 온다. 여기서는 category 테이블이다.

  • ON 키워드 뒤에는
    외래 키를 가지고 있는 왼쪽 테이블의 열 = 기본 키를 가지고 있는 오른쪽 테이블의 열
    이 온다.


데이터가 누락된 경우 JOIN이 동작하는 방식

데이터베이스가 데이터의 행에 대해 JOIN을 수행하려고 할 때 일부 데이터가 없다면, 사용 가능한 데이터를 결과 세트에 추가할지 아니면 해당 행을 건너뛰어 결과 세트에 추가하지 않을지를 지정할 수 있다.

이너 조인

이너 조인inner join은 데이터베이스가 조인join할 모든 데이터를 가지고 있다면 결과 세트에 데이터를 추가한다.

이너 조인을 생성하려면 JOIN 또는 INNER JOIN 절을 사용한다.

SELECT article.id, article.title, image.file
FROM article
JOIN image ON article.image_id = image.id;

레프트 아우터 조인

레프트 아우터 조인left outer join은 왼쪽 테이블에서 요청된 모든 데이터를 결과 세트에 추가한다. 그런 다음, 오른쪽 테이블에서 가져올 수 없는 값에 대해 NULL을 사용한다.

레프트 아우터 조인을 생성하려면 LEFT JOIN 또는 LEFT OUTER JOIN 절을 사용한다.

SELECT article.id, article.title, image.file
FROM article
LEFT JOIN image ON article.image_id = image.id;

여러 테이블에서 데이터 가져오기

두 개 이상의 테이블에서 데이터를 수집하기 위해 SELECT 명령 다음에 여러 개의 JOIN 절이 올 수 있다.

  • SELECT 문 다음에 데이터를 가져올 모든 열 이름을 지정한다.

  • JOIN 절을 사용하여 각 테이블의 데이터 간의 관계를 명시한다.

SELECT article.title, article.summary, category.name, image.file, image.alt
FROM article
JOIN category ON article.category_id = category.id
LEFT JOIN image ON article.image_id = image.id
ORDER BY article.id ASC;





출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022

0개의 댓글