[SQL] JOIN 정리
JOIN 테이블명 (AS 약칭)
ON 키1 = 키2
INNER JOIN( = JOIN)
SQL INNER JOIN
SQL의
INNER JOIN
명령은 공통 열을 기반으로 두 개의 테이블을 조인하고 해당 열에서 일치하는 값을 가진 행을 선택합니다.Example
-- join Customers and Orders tables -- select customer_id and first_name columns from the Customers table -- select amount from the Orders table SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers INNER JOIN Orders ON Customers.customer_id = Orders.customer;
여기서는
Customers.customer_id = Orders.customer
조건에 따라 Customers와 Orders 테이블이 조인됩니다. 위의 코드는 이 조건을 충족하지 않는 모든 행을 제외합니다.
SQL INNER JOIN Syntax
SQL
INNER JOIN
문의 구문은 다음과 같습니다:SELECT columns_from_both_tables FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2
여기에,
table1과 table2는 결합되어야 하는 두 개의 테이블입니다.
table1의 column1과 table2의 column2를 사용합니다.
참고:*
INNER JOIN
대신JOIN
을 사용할 수 있습니다. 기본적으로 이 두 절은 동일한 작업을 수행합니다.
Example 1: SQL INNER JOIN
-- join the Customers and Orders tables when -- the customer_id from Customers matches the customer column in Orders SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers JOIN Orders ON Customers.customer_id = Orders.customer;
위의 SQL 쿼리가 작동하는 방식은 다음과 같습니다:
Example: SQL INNER JOIN
Example 2: SQL INNER JOIN
다른 예시를 살펴보겠습니다.
SELECT Categories.cat_name, Products.prod_title FROM Categories INNER JOIN Products ON Categories.cat_id = Products.cat_id;
여기에서 SQL 명령은 cat_id 열이 두 테이블에 모두 존재하는 경우 Categories 및 Products 테이블 간의 공통 행을 선택합니다.
INNER JOIN With WHERE Clause
우리는
INNER JOIN
과 함께WHERE
절을 사용하여 출력에서 행을 추가로 필터링할 수 있습니다.-- join tables the Customers and Orders tables -- return rows if amount is 500 or higher SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers INNER JOIN Orders ON Customers.customer_id = Orders.customer WHERE Orders.amount >= 500;
SQL INNER JOIN With AS Alias
데이터베이스의 조인 쿼리는 길 수 있으므로, 쿼리를 간결하고 이해하기 쉽도록
INNER JOIN
안에서 AS 별칭을 사용할 수 있습니다.-- use alias C for Categories table -- use alias P for Products table SELECT C.cat_name, P.prod_title FROM Categories AS C INNER JOIN Products AS P ON C.cat_id= P.cat_id;
여기에서 SQL 명령은 카테고리 테이블과 제품 테이블을 내부 조인하면서 각각 C 및 P 별칭을 할당합니다.
SQL INNER JOIN With Three Tables
우리는
INNER JOIN
을 사용하여 두 개 이상의 테이블을 조인할 수도 있습니다. 예를 들어,-- join three tables: Customers, Orders, and Shippings SELECT C.customer_id, C.first_name, O.amount, S.status FROM Customers AS C INNER JOIN Orders AS O ON C.customer_id = O.customer INNER JOIN Shippings AS S ON C.customer_id = S.customer;
여기에 SQL 명령문이 있습니다.
Customers
테이블의customer_id
(Customers 테이블)와Orders
테이블의customer
를 기준으로 조인합니다.그리고
Customers
테이블의customer_id
(Customers 테이블)와Shippings
테이블의customer
를 기준으로 조인합니다.이 명령은 조인 조건을 모두 만족하는 열 값이 있는 행을 반환합니다.
LEFT OUTER JOIN
SQL LEFT JOIN
SQL의
LEFT JOIN
은 공통 열을 기반으로 두 개의 테이블을 결합합니다. 이 열에서 일치하는 값을 가진 레코드와 왼쪽 테이블의 나머지 행을 선택합니다.Example
-- left join Customers and Orders tables based on their shared customer_id columns -- Customers is the left table -- Orders is the right table SELECT Customers.customer_id, Customers.first_name, Orders.item FROM Customers LEFT JOIN Orders ON Customers.customer_id = Orders.customer_id;
여기에서 코드는
Customers
와Orders
테이블을 customer_id를 기준으로 왼쪽 조인합니다. 결과 집합에는 다음이 포함됩니다:- customer_id 및
Customers
테이블에서의 first_name 열 (주문 테이블에 값이 없는 경우도 포함) Orders
테이블의 item 열
SQL LEFT JOIN Syntax
SQL
LEFT JOIN
문의 구문은 다음과 같습니다:SELECT columns_from_both_tables FROM table1 LEFT JOIN table2 ON table1.column1 = table2.column2
여기서,
- table1은 조인될 왼쪽 테이블입니다.
- table2는 조인될 오른쪽 테이블입니다.
- column1과 column2는 두 테이블 간의 관련된 열입니다.
Example: SQL LEFT Join
-- left join the Customers and Orders tables SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers LEFT JOIN Orders ON Customers.customer_id = Orders.customer;
여기에 이 코드가 작동하는 방법이 있습니다:
Example: SQL LEFT JOIN
여기에서 SQL 명령은 'Customers' 테이블의 'customer_id'와 'first_name' 열 및 'Orders' 테이블의 'amount' 열을 선택합니다.
결과 집합에는
Customers
테이블의customer_id
와Orders
테이블의customer
가 일치하는 행과 함께Customers
테이블의 나머지 모든 행이 포함됩니다.
LEFT JOIN With WHERE Clause
SQL
LEFT JOIN
문은 선택적으로 WHERE 절을 가질 수 있습니다. 예를 들어,SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers LEFT JOIN Orders ON Customers.customer_id = Orders.customer WHERE Orders.amount >= 500;
여기에서 SQL 명령문은
Customers
와Orders
테이블을 조인하고,amount
가 500 이상인 행을 선택합니다.
SQL LEFT JOIN With AS Alias
AS 별명를
LEFT JOIN
안에서 사용하여 쿼리를 간결하고 깔끔하게 만들 수 있습니다. 예를 들어,-- use alias C for Categories table -- use alias P for Products table SELECT C.cat_name, P.prod_title FROM Categories AS C LEFT JOIN Products AS P ON C.cat_id= P.cat_id;
여기에서 SQL 명령문은 카테고리 테이블과 제품 테이블을 왼쪽 조인하면서 각각 C와 P의 별칭을 부여합니다.
- customer_id 및
RIGHT OUTER JOIN
SQL RIGHT JOIN
SQL
RIGHT JOIN
문은 공통 열을 기준으로 두 개의 테이블을 조인합니다. 이 문은 이러한 열에서 일치하는 값을 가진 레코드와 오른쪽 테이블의 나머지 행을 선택합니다.Example
-- join Customers and Orders tables -- based on their shared customer_id columns -- Customers is the left table -- Orders is the right table SELECT Customers.customer_id, Customers.first_name, Orders.item FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer_id;
여기에서 코드는
Customers
테이블과Orders
테이블을 customer_id를 기준으로 right join합니다. 결과 집합에는 다음이 포함됩니다.Customers
테이블의 customer_id 및 first_name 열Orders
테이블의 item 열 (Customers
테이블에 값이 없는 것도 포함)
RIGHT JOIN SYNTAX
SQL
RIGHT JOIN
문의 구문은 다음과 같습니다:SELECT columns_from_both_tables FROM table1 RIGHT JOIN table2 ON table1.column1 = table2.column2
여기서,
- table1은 왼쪽에 결합할 테이블입니다.
- table2는 오른쪽에 결합할 테이블입니다.
- column1과
column2
는 두 테이블의 관련 컬럼입니다.
Example: SQL RIGHT JOIN
-- join Customers and Orders tables -- based on customer_id of Customers and customer of Orders -- Customers is the left table -- Orders is the right table SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer;
이 코드는 다음과 같이 작동합니다:
Example: SQL RIGHT JOIN
여기에서 SQL 명령은
Customers
테이블의customer_id
와first_name
열, 그리고Orders
테이블의amount
열을 선택합니다.그리고 결과 집합은
Customers
테이블의customer_id
와Orders
테이블의customer
간에 일치하는 행과Orders
테이블의 나머지 모든 행을 포함합니다.참고: 우리의 온라인 SQL 컴파일러는 SQLite를 기반으로 하기 때문에
RIGHT JOIN
을 지원하지 않습니다. 그러나 왼쪽 조인과 오른쪽 테이블을 교환하여 동일한 결과를 얻을 수 있습니다.-- left join Orders and Customers tables -- Orders is the left table -- Customers is the right table SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Orders LEFT JOIN Customers ON Orders.customer = Customers.customer_id;
RIGHT JOIN With WHERE Clause
SQL
RIGHT JOIN
문은 선택적으로 WHERE 절을 가질 수 있습니다. 예를 들어,SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer WHERE Orders.amount >= 500;
여기에서 SQL 명령은
Customers
테이블과Orders
테이블을 조인하고, 500 이상인 amount 을 가진 행을 선택합니다.
SQL RIGHT JOIN With AS Alias
우리는 SQL 코드를 간결하고 깔끔하게 만들기 위해
RIGHT JOIN
안에서 AS 별칭을 사용할 수 있습니다. 예를 들어,-- use alias C for Categories table -- use alias P for Products table SELECT C.category_name, P.product_title FROM Categories AS C RIGHT JOIN Products AS P ON C.cat_id = P.cat_id;
여기에서 SQL 명령은
Categories
테이블과Products
테이블에 대해 오른쪽 조인을 수행하면서 각각 C 및 P 별칭을 할당합니다.
FULL OUTER JOIN
SQL FULL OUTER JOIN
SQL
FULL OUTER JOIN
문은 공통 열을 기준으로 두 개의 테이블을 조인합니다. 이 문은 이러한 열에서 일치하는 값을 가진 레코드와 두 테이블의 나머지 행을 선택합니다.Example
-- full join Customers and Orders tables -- based on their shared customer_id columns -- Customers is the left table -- Orders is the right table SELECT Customers.customer_id, Customers.first_name, Orders.item FROM Customers FULL OUTER JOIN Orders ON Customers.customer_id = Orders.customer_id;
여기에서 SQL 쿼리는 Customers와 Orders 두 개의 테이블에 대해 FULL OUTER JOIN을 수행합니다. 이는 결과 집합에 공통 customer_id 값을 가지지 않는 행도 포함하여 두 테이블의 모든 행을 포함한다는 것을 의미합니다.
FULL OUTER JOIN SYNTAX
SQL
FULL OUTER JOIN
문의 구문은 다음과 같습니다:SELECT columns FROM table1 FULL OUTER JOIN table2 ON table1.column1 = table2.column2;
여기에,
- table1과 table2는 조인될 테이블입니다.
- column1과 column2는 두 테이블의 관련된 열입니다.
Example: SQL OUTER Join
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers FULL OUTER JOIN Orders ON Customers.customer_id = Orders.customer;
여기에서 SQL 명령문은
Customers
테이블에서customer_id
와first_name
열을 선택하고Orders
테이블에서amount
열을 선택합니다.결과 집합에는
Customers
테이블의customer_id
와Orders
테이블의customer
간에 일치 여부와 관계없이 두 테이블의 모든 행이 포함됩니다.Example: SQL FULL OUTER JOIN
FULL OUTER JOIN With WHERE Clause
SQL의 FULL OUTER JOIN 문은 선택적으로
WHERE
절을 포함할 수 있습니다. 예를 들어,SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers FULL OUTER JOIN Orders ON Customers.customer_id = Orders.customer WHERE Orders.amount >= 500;
여기서 SQL 명령은 두 테이블을 조인하고, 금액이 500 이상인 행을 선택합니다.
SQL FULL OUTER JOIN With AS Alias
우리는
FULL OUTER JOIN
안에서 AS 별칭을 사용하여 질의를 간결하고 깔끔하게 만들 수 있습니다. 예를 들어,-- use alias C for Categories table -- use alias P for Products table SELECT C.category_name, P.product_title FROM Categories AS C FULL OUTER JOIN Products AS P ON C.category_id = P.cat_id;
여기서 SQL 명령은
Categories
및Products
테이블에 대해FULL OUTER JOIN
을 수행하면서 각각에 별칭C
와P
를 할당합니다.
'MySQL' 카테고리의 다른 글
TIMESTAMPDIFF() 사용하기 (0) | 2024.04.07 |
---|---|
날짜 관련 함수 정리 (0) | 2024.04.04 |
LIKE 연산자 (0) | 2024.03.05 |
UNION / UNION ALL (0) | 2024.03.04 |
[MySQL] 문법 정리 (0) | 2023.12.18 |