[MySql] ERM - JOIN

hyun·2022년 9월 14일
0

SQL

목록 보기
7/7

📚 ERM (Entity-Relationship modeling)

  • 개체(Entity)간의 관계(RelationShip)을 저장하는 모델링 기법
  • 예를 들어 상품과 회원-주문-상품 세 개체가 있다고 할 때, 한 회원이 많은 주문을 할 수 있으므로 회원 <-> 주문 = 1 : N이고 주문 <-> 상품은 한 상품이 많이 주문될 수 있으므로 N : 1이다.
  • 이 때 N과 1을 관계로 나타낼 때, 1은 개체의 고유한 식별변호(PRIMARY KEY)가 되고, N은 중복 데이터가 가능한 FOREIGN KEY를 의미한다.

JOIN

INNER JOIN

  • INNER JOIN 쿼리는 여러 테이블의 공통 값을 통해 테이블을 결합한다.
SELECT [col] FROM [table1] AS [table_alias1]
INNER JOIN
[table2] AS [table_alias2]
ON [condition]

아래는 students 테이블이다.

아래는 orders 테이블이다.

그러면 두 테이블을 합쳐서 나타내보자.

SELECT * FROM students AS A INNER JOIN orders AS B ON A.name = B.name;

OUTER JOIN

  • 매칭되지 않는 데이터도 조회한다.
  • RIGHT, LEFT, FULL JOIN 세 가지가 존재한다.
  • RIGHT는 오른쪽, LEFT는 왼쪽, FULL은 모든 테이블을 기준으로 조회한다.

LEFT JOIN 예제

왼쪽 students 테이블 기준 매칭되지 않는 값은 null, 나머지는 매칭되어 출력된다.

RIGHT JOIN 예제

오른쪽 orders 테이블은 1:N 관계라서 NULL 값이 없는 것을 확인할 수 있다.

mysql에는 FULL JOIN이 없다.

CROSS JOIN, SELF JOIN

  • CROSS JOIN은 두 테이블의 행을 결합
  • SELF JOIN은 한 테이블의 행과 다른 행들을 결합

CROSS JOIN 예제

A 테이블의 행 * B 테이블의 행만큼 나온다.

매칭되는 것끼리 그대로 이어붙이는 느낌.

SELF JOIN 예제


한 테이블의 행들을 조건 + 원래 행들 그대로 다 이어붙인다.

0개의 댓글