SQL JOIN

SQL join은 두 개나 많은 테이블의 열 간의 관계를 기반으로 데이터를 쿼리하는 데 사용됩니다.

Join 과 Key

완전한 결과를 얻기 위해 두 개나 많은 테이블에서 결과를 가져오는 경우가 있습니다. 이 경우에는 join을 수행해야 합니다.

데이터베이스의 테이블은 키를 통해 서로 연결될 수 있습니다. 주요 키(Primary Key)는 각 행의 값이 독립적이고 독특한 열입니다. 테이블에서 각 주요 키의 값은 독립적입니다. 이렇게 하면 테이블 간의 데이터를 중복 없이 결합할 수 있습니다.

다음 "Persons" 테이블을 보세요:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

请注意,"Id_P" 열은 Persons 테이블의 주요 키입니다. 이는 두 행이 동일한 Id_P를 가질 수 없다는 것을 의미합니다. 두 사람의 이름이 완전히 동일하더라도, Id_P는 그들을 구분할 수 있습니다.

다음 "Orders" 테이블을 보세요:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

请注意,"Id_O" 열은 Orders 테이블의 주요 키이며, "Orders" 테이블의 "Id_P" 열은 "Persons" 테이블의 사람을 참조하는 데 사용되며, 그들의 정확한 이름을 사용하지 않습니다.

주의하세요, "Id_P" 열이 위의 두 테이블을 연결합니다.

두 테이블 참조

두 테이블에서 데이터를 가져오기 위해 두 테이블을 참조할 수 있습니다:

어떤 사람이 어떤 제품을 주문했는가?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

결과 집합:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - JOIN 사용

위의 방법 외에도 JOIN 키워드를 사용하여 두 테이블에서 데이터를 가져올 수 있습니다.

모든 사람의 주문을 나열하려면 다음 SELECT 문을 사용할 수 있습니다:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

결과 집합:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

다른 SQL JOIN

위의 예제에서 사용한 INNER JOIN(내결합) 외에도 다른 유형의 결합을 사용할 수 있습니다.

다음은 사용할 수 있는 JOIN 유형과 그 차이점을 나열했습니다.

  • JOIN: 테이블에 최소한 하나의 일치가 있으면 행을 반환
  • LEFT JOIN: 오른쪽 테이블에서 일치하는 것이 없더라도 왼쪽 테이블에서 모든 행을 반환
  • RIGHT JOIN: 왼쪽 테이블에서 일치하는 것이 없더라도 오른쪽 테이블에서 모든 행을 반환
  • FULL JOIN: 하나의 테이블에서 일치하는 것이 있으면 행을 반환