목차
SQL JOIN
JOIN 절은 두 개 이상의 테이블 사이의 관련 열을 기반으로 행을 결합하는 데 사용됩니다.
SQL JOIN 실습하기
"Orders" 테이블에서 선택한 항목을 살펴보겠습니다.
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
그런 다음 "Customers" 테이블에서 선택한 항목을 확인합니다.
CustomerID | CustomerName | ContactName | Country |
---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mexico |
"Orders" 테이블의 "CustomerID" 열은 "Customers" 테이블의 "CustomerID"를 참조합니다. 위의 두 테이블 간의 관계는 "CustomerID" 열입니다. 그런 다음 두 테이블에서 일치하는 값이 있는 레코드를 선택하는 다음 SQL 문(INNER JOIN 포함)을 만들 수 있습니다.
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
다양한 유형의 SQL JOIN
SQL (INNER)JOIN 실습하기
(INNER) JOIN: 두 테이블에서 일치하는 값이 있는 레코드를 반환합니다.
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
SQL LEFT (OUTER)JOIN 실습하기
LEFT (OUTER) JOIN: 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다.
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
SQL RIGHT (OUTER)JOIN 실습하기
RIGHT (OUTER) JOIN: 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환합니다.
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
FULL (OUTER) JOIN: 왼쪽 또는 오른쪽 테이블에 일치하는 항목이 있으면 모든 레코드를 반환합니다.
SQL FULL (OUTER)JOIN 실습하기
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
SQL SELF JOIN 실습하기
SQL SELF JOIN은 일반 조인이지만 테이블이 자체적으로 조인됩니다. T1과 T2는 동일한 테이블에 대한 서로 다른 테이블 별칭입니다.
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
SQL UNION
UNION 연산자는 둘 이상의 SELECT 문의 결과 집합을 결합하는 데 사용됩니다. UNION 내의 모든 SELECT 문은 동일한 수의 열을 가져야 합니다. 열의 데이터 유형도 유사해야 합니다. 모든 SELECT 문의 열도 같은 순서여야 합니다.
SQL UNION 기본예제
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
SQL UNION ALL 기본예제
UNION 연산자는 기본적으로 고유한 값만 선택합니다. 중복 값을 허용하려면 UNION ALL을 사용합니다.
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
SQL UNION/UNION ALL 실습하기
"Customers" table:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
"Suppliers" table:
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
SQL UNION, 일부 고객 또는 공급업체의 도시가 동일한 경우 UNION은 고유한 값만 선택하기 때문에 각 도시는 한 번만 나열됩니다. UNION ALL을 사용하여 중복 값도 선택할 수 있습니다.
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION ALL, 다음 SQL 문은 "Customers" 및 "Suppliers" 테이블 모두에서 도시(중복 값도 있음)를 반환합니다.
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION ALL, 임시열(가상의 열)생성한 SQL UNION ALL
SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
'탐구생활 > SQL 탐구생활' 카테고리의 다른 글
SQL 기초 구문 배우기(SQL HAVING) (6) | 2023.05.26 |
---|---|
SQL 기초 구문 배우기(SQL GROUP BY) (38) | 2023.05.22 |
SQL 기초 구문 배우기(IN, BETWEEN, Aliases(AS)) (0) | 2023.05.12 |
SQL 기초 구문 배우기 (COUNT(), AVG() and SUM(), LIKE, Wildcards) (4) | 2023.05.10 |
SQL 기초 구문 배우기 (NULL Value,SELECT TOP,MIN() and MAX() Functions) (4) | 2023.05.09 |
댓글