티스토리 뷰

Tip and Error/ETC

5. Multiple tables

geonwoopaeng@gmail.com 2021. 3. 6. 13:15

Table 합치기(JOIN)


  • 조건이 참이면 다른 table의 행과 결합

SELECT *                                 -- 작성 될 column 고르기(table_name.column(name))
FROM table_name1
JOIN table_name2                            
    ON table_name1.column(name)            -- 공통된 column(name)
    = table_name2.column(name);

-- ex)

SELECT *
FROM orders
JOIN subscriptions
  ON orders.subscription_id
  = subscriptions.subscription_id
WHERE subscriptions.description = 'Fashion Magazine'; -- 추가 조건

Left Join


  • FROM table(A)의 모든 행은 유지하지만 JOIN table(B)는 A에 없는 행을 생략한다.

SELECT *
FROM table_name1
LEFT JOIN table_name2
    ON table_name1.column(name) = table_name2.column(name);

-- ex)
SELECT *
FROM orders
LEFT JOIN subscriptions
    ON orders.subscription_id
    = subscriptions.subscription_id

Primary Key & Foreign Key


  • Primary Key(기본 키): 각 table에서 각 행을 고유하게 식별하는 열
  • Foreign Key: Primary Key가 다른 table에 있을 때

SELECT *
FROM table1
JOIN table2
    ON table1.column1(Primary Key) = table2.column2(Foregin Key);

-- ex)
SELECT *
FROM class
JOIN student
    ON class.id = student.class_id;

Cross Join


  • 한 테이블의 모든 행을 다른 테이블의 모든 행과 결합(모든 조합)

SELECT *
FROM table1
CROSS JOIN table2;

-- ex)

SELECT month, 
    COUNT(*) AS 'subscribers'
FROM newspaper
CROSS JOIN months
WHERE start_month <= month
    AND end_month >= month
GROUP BY month;



table을 다른 table에 쌓기(UNION)


  • 한 data 세트를 다른 data 세트 위에 쌓는다.

SELECT *
FROM table1
UNION
SELECT *
FROM table2;

-- ex)
SELECT *
FROM newspaper
UNION
SELECT *
FROM online;



table을 결합하고 별도의 쿼리를 수행(WITH)


  • WITH 쿼리를 가지고 새 쿼리를 작성한다.
  • 최종 쿼리에서 사용할 수 있는 하나 이상의 임시 테이블을 정의한다.

WITH query(name) AS (
    SELECT ...
    ...
    ...
    )
SELECT *
FROM query(name)
JOIN query2(name)
    ON _____ = _____;

-- ex)
WITH previous_query AS (
  SELECT customer_id,
    COUNT(subscription_id) AS 'subscriptions'
      FROM orders
      GROUP BY customer_id
)
SELECT customers.customer_name,
  previous_query.subscriptions
FROM previous_query
JOIN customers
  ON previous_query.customer_id
  = customers.customer_id;

반응형

'Tip and Error > ETC' 카테고리의 다른 글

수학 기호  (0) 2021.04.05
VPN을 사용해야 할 6가지 이유 (Jim Martin | PC Advisor)  (0) 2021.03.25
4. Aggregates  (0) 2021.03.04
3. Command (2)  (0) 2021.03.02
2. Command (1)  (0) 2021.03.02
공지사항
최근에 올라온 글