SQL JOIN
- 이전 페이지 SQL Aliases
- 다음 페이지 SQL Inner 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: 하나의 테이블에서 일치하는 것이 있으면 행을 반환
- 이전 페이지 SQL Aliases
- 다음 페이지 SQL Inner Join