USING 키워드는 SQL에서 테이블을 조인할 때 공통된 컬럼을 기반으로 결합할 때 사용한다. INNER JOIN이나 LEFT JOIN 같은 조인과 함께 사용되며, 지정한 공통 컬럼으로 두 테이블을 결합한다.
USING은 공통된 컬럼을 명시적으로 지정하여 두 테이블을 조인한다. 이때 두 테이블에 동일한 이름의 컬럼이 있어야 한다.
구문
SELECT column_list
FROM table1
JOIN table2
USING (common_column);
특징
- 단순화: 공통 컬럼을 지정하기 때문에 ON 조건을 반복해서 지정할 필요가 없다.
- 공통 컬럼: USING에 지정된 컬럼은 두 테이블 모두에 존재해야 하고 이름이 동일해야 한다.
- 결과: 결과에는 공통 컬럼이 한 번만 표시된다.
ex) 테이블
-- Customers 테이블
+-------------+--------------+
| customer_id | customer_name|
+-------------+--------------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+-------------+--------------+
-- Orders 테이블
+-------------+-------------+--------+
| order_id | customer_id | amount |
+-------------+-------------+--------+
| 101| 1 | 200 |
| 102| 2 | 150 |
| 103| 1 | 250 |
+-------------+-------------+--------+
ON을 사용하는 INNER JOIN:
SELECT
customer_name,
amount
FROM
Customers c
JOIN
Orders o
ON
c.customer_id = o.customer_id;
customer_id가 같은 레코드를 Customers와 Orders 테이블에서 결합하였다.
USING을 사용하는 INNER JOIN:
SELECT
customer_name,
amount
FROM
Customers
JOIN
Orders
USING (customer_id);
USING 절을 사용하여 customer_id 컬럼을 기준으로 두 테이블을 조인한다. 두 테이블에 customer_id라는 공통 컬럼이 있으므로, 조인 조건을 간단히 할 수 있다.
사용 종류
다중 공통 컬럼:
SELECT
*
FROM
table1
JOIN
table2
USING (column1, column2);
LEFT JOIN:
SELECT
*
FROM
table1
LEFT JOIN
table2
USING (common_column);
USING의 장단점
장점:
- 간결함: 공통 컬럼을 ON 조건에서 반복해서 지정하지 않아도 된다.
- 명확성: 조인할 때 공통 컬럼을 명확하게 표시하여 가독성을 높인다.
단점:
- 제약 조건: 공통 컬럼이 두 테이블에 동일한 이름으로 존재해야 한다. 그렇지 않으면 사용할 수 없다.
- 명시성 부족: 복잡한 조인 조건이 필요한 경우에는 ON 절을 사용하는 것이 더 명확할 수 있다.
ex)
//FOOD_ORDER 테이블과 PRODUCTS 테이블 조인 예시
SELECT
ORDER_ID,
PRODUCT_NAME,
SUM(AMOUNT) AS TOTAL_ORDER
FROM
FOOD_ORDER
JOIN
PRODUCTS
USING (PRODUCT_ID)
GROUP BY
ORDER_ID, PRODUCT_NAME;
이 쿼리는 FOOD_ORDER 테이블과 PRODUCTS 테이블을 PRODUCT_ID를 통해 조인하고, 각 주문에 대한 총 주문량을 계산하여 주문 ID와 제품 이름과 함께 표시한다.
INNER JOIN, LEFT JOIN 등과 함께 사용하여 공통 컬럼을 기반으로 데이터를 결합할 때 유용하다. 그러나 복잡한 조건이 필요할 경우 ON 절을 사용하는 것이 좋다.
'SQL 정리' 카테고리의 다른 글
OUTER, 테이블 여러개를 JOIN해야되는 경우 (2) | 2024.07.23 |
---|---|
CONCAT과 SUBSTRING 응용 (0) | 2024.07.20 |
SQL 정리 .5 (0) | 2024.07.04 |
SQL 정리. 4 (0) | 2024.07.03 |
SQL 정리. 3 (0) | 2024.06.28 |