์ด(Column) ํฉ์น๊ธฐ
๋ด๋ถ ์กฐ์ธ
1. FROM/WHERE๋ฅผ ์ฌ์ฉ
๋ด๋ถ ์กฐ์ธ์ ๋ ํ ์ด๋ธ์ ํค๊ฐ์ด ๋งค์นญ๋ ๊ฒฝ์ฐ ์ ํ๋ ๋ชจ๋ ์ด์ ๋ํ๋
SELECT ํ
์ด๋ธ๋ช
1.์ด ์ด๋ฆ1, ํ
์ด๋ธ๋ช
2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1, ํ
์ด๋ธ๋ช
2
WHERE ํ
์ด๋ธ๋ช
1.KEY=ํ
์ด๋ธ๋ช
2.KEY;
2. FROM/WHERE์ ๋ณ์นญ์ ์ฌ์ฉ
์ค๋ผํด์ ํฌํจํ ๋ช๋ช DBMS๋ ํ ์ด๋ธ๋ช ๋ณ์นญ์ ์ค ๋ AS ํค์๋๊ฐ ์ง์๋์ง ์์ผ๋ฏ๋ก
AS๋ฅผ ๋นผ๊ณ ํ ์ด๋ธ ๋ณ์นญ์ ์ค์ ํด์ผํจ!
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1(AS) ๋ณ์นญ1, ํ
์ด๋ธ๋ช
2(AS) ๋ณ์นญ2
WHERE ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;
3. INNER JOIN์ ์ฌ์ฉ
INNER JOIN์ ์ฌ์ฉํ์ฌ ๋ ํ ์ด๋ธ์ ํฉ์น ์ ์๋ค
=> ON ๋ค์ ๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ๋๋ ํค๊ฐ์ ์ ์ผ๋ฉด ๋จ
SELECT ํ
์ด๋ธ๋ช
1.์ด ์ด๋ฆ1, ํ
์ด๋ธ๋ช
2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 INNER JOIN ํ
์ด๋ธ๋ช
2
ON ํ
์ด๋ธ๋ช
1.KEY=ํ
์ด๋ธ๋ช
2.KEY;
4. INNER JOIN๊ณผ ๋ณ์นญ์ ์ฌ์ฉ
์ค๋ผํด์ ํฌํจํ ๋ช๋ช DBMS๋ ํ ์ด๋ธ๋ช ๋ณ์นญ์ ์ค ๋ AS ํค์๋๊ฐ ์ง์๋์ง ์์ผ๋ฏ๋ก
AS๋ฅผ ๋นผ๊ณ ํ ์ด๋ธ ๋ณ์นญ์ ์ค์ ํด์ผํจ!
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1(AS) ๋ณ์นญ1 INNER JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;



1. CUSTOMERS์ ORDERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด?
SELECT TMP1.CUST_ID, TMP1.CUST_NM, TMP2.ORDER_ID
FROM CUSTOMERS TMP1, ORDERS TMP2
WHERE TMP1.CUST_ID = TMP2.CUST_ID;
2. CUSTOMERS, ORDERS, EMPLOYEE ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ, ํ๋งค์ง์์์ด๋ ๋ฐ ํ๋งค์ง์์ด๋ฆ์ ๋ํ๋ด๋ ค๋ฉด?
SELECT TMP1.CUST_ID, TMP1.CUST_NM, TMP2.ORDER_ID, TMP2.EMP_ID, TMP3.NM
FROM CUSTOMERS TMP1
INNER JOIN ORDERS TMP2 ON TMP1.CUST_ID = TMP2.CUST_ID
INNER JOIN EMPLOYEE TMP3 ON TMP2.EMP_ID = TMP3.EMP_ID;
1. ์กฐ์ธ ์กฐ๊ฑด์ ์ง์ ํ์ง ์์ ์ฑ ๋ ํ ์ด๋ธ์ ์กฐ์ธํ๋ฉด ๊ณฑ์งํฉ์ด ๋๋ค
=> ์ด ๊ฒฝ์ฐ ๋ฐํ ๋๋ ํ์ ์๋ ์ฒซ ๋ฒ์งธ ํ ์ด๋ธ๊ณผ ๋ ๋ฒ์งธ ํ ์ด๋ธ์ ํ์ ์๋ฅผ ๊ณฑํ ์๊ฐ ๋๋ค
์ธ๋ถ ์กฐ์ธ
1. LEFT OUTER JOIN
์ผ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก, OUTER๋ฅผ ์๋ตํด๋ ๋ฌด๋ฐฉํ๋ค
(๋ง์ฝ ์ผ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง๋ง ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง ์๋ ํค๊ฐ์ด ์๋ค๋ฉด NULL๊ฐ์ผ๋ก ๊ฐ์ด ๋ฐํ๋จ)
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 LEFT (OUTER) JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;
2. RIGHT OUTER JOIN
์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก, OUTER๋ฅผ ์๋ตํด๋ ๋ฌด๋ฐฉํ๋ค
(๋ง์ฝ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง๋ง ์ผ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง ์๋ ํค๊ฐ์ด ์๋ค๋ฉด NULL๊ฐ์ผ๋ก ๊ฐ์ด ๋ฐํ๋จ)
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 RIGHT (OUTER) JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;
3. FULL OUTER JOIN
FULL OUTER JOIN ํค์๋๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ด ๋ฐํ๋๋ค
=> ์ฆ, LEFT JOIN๊ณผ RIGHT JOIN์ ํฉ์ณ๋์ ํํ๋ผ๊ณ ๋ณผ ์ ์์
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 FULL (OUTER) JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;



1. CUSTOMERS์ ORDERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ํ๋ด๊ณ ์ฃผ๋ฌธ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ์ 1, ์๋ ๊ณ ๊ฐ์ 0์ผ๋ก ํ์ํ ํ ๊ณ ๊ฐ์์ด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค๋ฉด?
SELECT TMP1.CUST_ID, TMP1.CUST_NM, TMP2.ORDER_ID,
CASE WHEN TMP2.CUST_ID IS NOT NULL THEN 1 ELSE 0 END AS ORDER_FLG
FROM CUSTOMERS TMP1 LEFT OUTER JOIN ORDERS TMP2
ON TMP1.CUST_ID = TMP2.CUST_ID
ORDER BY 1;
2. EMPLOYEE์ OREDERS, CUSTOMERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ง์์์ด๋, ์ด๋ฆ, ํด๋น ์ง์์ด ๋งก์๋ ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ํ๋ด๊ณ ํด๋น ์ฃผ๋ฌธ๋ฒํธ์ ๊ณ ๊ฐ์์ด๋๋ฅผ ๋งค์นญ์์ผ ๊ณ ๊ฐ์ด๋ฆ์ ํ๊ธฐํ๋ ค๋ฉด?
SELECT TMP1.EMP_ID, TMP1.NM, TMP2.ORDER_ID, TMP2.CUST_ID, TMP3.CUST_NM
FROM EMPLOYEE TMP1 LEFT OUTER JOIN ORDERS TMP2 ON TMP1.EMP_ID = TMP2.EMP_ID
LEFT OUTER JOIN CUSTOMERS TMP3 ON TMP2.CUST_ID = TMP3.CUST_ID;
ORDER BY 1;
1. ํ ์ด๋ธ์ ํตํฉํ ๋ ๊ธฐ์ค์ด ๋๋ ํ ์ด๋ธ์ ๊ฐ์ฅ ๋จผ์ ๋ํ๋ด๋ฉด ๋ฐ์ดํฐ ๋ถ์์ด ์ฉ์ดํ๋ค
2. LEFT OUTER JOIN์ WHERE ์กฐ๊ฑด์ ์ *= ์ฐ์ฐ์๋ฅผ ํตํด ๋ํ๋ผ ์ ์๊ณ , RIGHT OUTER JOIN์ WHERE ์กฐ๊ฑด์ ์ =* ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ๋ํ๋ผ ์ ์๋ค
3. ACCESS, MY SQL ๋ฑ ๋ช๋ช DBMS์์๋ FULL OUTER JOIN ํค์๋๊ฐ ์ง์๋์ง X
4. ํ ์ด๋ธ ๋์ SELECT ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ํ ์ด๋ธ์ ๋ง๋ค ์ ์๋ค
=> ํ ์ด๋ธ ์ ์ฒด๋ฅผ ํฉ์น ์๋ ์๊ณ ํ ์ด๋ธ ์ผ๋ถ๋ง ํฉ์น ์๋ ์์
ex. FROM EMPLOYEE TMP1 LEFT OUTER JOIN (SELECT ORDER_ID, CUST_ID FROM ORDERS) TMP2
5. ํ ์ด๋ธ ๋ณ์นญ์ TMP1, TMP2, TMP3 ๋ฑ๊ณผ ๊ฐ์ด ์์ ์๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์
6. SELECT๋ฌธ์ ์ถ๋ ฅํ ์ด ์ด๋ฆ์ ์ ์ ๋ ์ด๋ ํ ์ด๋ธ์์ ์ฐธ์กฐ๋๋ ์ด ์ด๋ฆ์ธ์ง ๋ํ๋ด๋ ๊ฒ์ด ์ข์
ํ(Row) ํฉ์น๊ธฐ
UNION ์ฐ์ฐ์
1. UNION ์ฐ์ฐ์ ์ฌ์ฉ
UNION์ ๋ ๊ฐ ์ด์์ SELECT๋ฌธ์ ํ์ ํฉ์น๋ ์ญํ ์ ํจ
=> ORDER BY์ ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ํฉ์ณ์ง ํ ์ ์ฒด์ ์ ์ฉ๋จ!
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 FROM ํ
์ด๋ธ๋ช
1 WHERE ์กฐ๊ฑด์
UNION
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 FROM ํ
์ด๋ธ๋ช
2 WHERE ์กฐ๊ฑด์
ORDER BY 1;
2. UNION ALL ์ฐ์ฐ์ ์ฌ์ฉ
UNION ALL ์ฐ์ฐ์๋ ๋ ๊ฐ ์ด์์ SELECT๋ฌธ์ ํ์ ํฉ์น๋ ์ญํ ์ ํ๋ค
=> UNION ์ฐ์ฐ์์์ ์ฐจ์ด๋ UNION ALL์ ์ค๋ณต์ ํฌํจํ ๋ชจ๋ ๊ฐ์ ๋ํ๋ธ๋ค๋ ์ !
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2, FROM ํ
์ด๋ธ๋ช
1 WHERE ์กฐ๊ฑด์
UNION ALL
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2, FROM ํ
์ด๋ธ๋ช
2 WHERE ์กฐ๊ฑด์
ORDER BY 1;



1. CUSTOMERS์ EMPLOYEE ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ง์์ด๋ฆ๊ณผ ๊ณ ๊ฐ์ด๋ฆ์ ํฉ์ณ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด?
SELECT CUST_NM AS NM FROM CUSTOMERS
UNION
SELECT NM FROM EMPLOYEE
ORDER BY 1;
2. CUSTOMERS์ ORDERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ค๋ณต๊ฐ์ ํ์ฉํ ์ฑ ๊ณ ๊ฐ์์ด๋๋ฅผ ํฉ์ณ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด?
SELECT CUST_ID FROM CUSTOMERS
UNION ALL
SELECT CUST_ID FROM ORDERS
ORDER BY 1;
'๐ซง Database > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ๋ฐ ํ ์ด๋ธ ์กฐ์ (0) | 2024.02.29 |
---|---|
ํ์ ์ฟผ๋ฆฌ (2) | 2024.02.29 |
๋ฐ์ดํฐ์ ๊ทธ๋ฃนํ, ํํฐ๋ง (1) | 2024.02.27 |
SQL ํจ์ ํ์ฉํ๊ธฐ (0) | 2024.02.26 |
SQL ๊ธฐ๋ณธ ํจ์ ๋ฐฐ์ฐ๊ธฐ (2) | 2024.02.26 |
์ด(Column) ํฉ์น๊ธฐ
๋ด๋ถ ์กฐ์ธ
1. FROM/WHERE๋ฅผ ์ฌ์ฉ
๋ด๋ถ ์กฐ์ธ์ ๋ ํ ์ด๋ธ์ ํค๊ฐ์ด ๋งค์นญ๋ ๊ฒฝ์ฐ ์ ํ๋ ๋ชจ๋ ์ด์ ๋ํ๋
SELECT ํ
์ด๋ธ๋ช
1.์ด ์ด๋ฆ1, ํ
์ด๋ธ๋ช
2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1, ํ
์ด๋ธ๋ช
2
WHERE ํ
์ด๋ธ๋ช
1.KEY=ํ
์ด๋ธ๋ช
2.KEY;
2. FROM/WHERE์ ๋ณ์นญ์ ์ฌ์ฉ
์ค๋ผํด์ ํฌํจํ ๋ช๋ช DBMS๋ ํ ์ด๋ธ๋ช ๋ณ์นญ์ ์ค ๋ AS ํค์๋๊ฐ ์ง์๋์ง ์์ผ๋ฏ๋ก
AS๋ฅผ ๋นผ๊ณ ํ ์ด๋ธ ๋ณ์นญ์ ์ค์ ํด์ผํจ!
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1(AS) ๋ณ์นญ1, ํ
์ด๋ธ๋ช
2(AS) ๋ณ์นญ2
WHERE ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;
3. INNER JOIN์ ์ฌ์ฉ
INNER JOIN์ ์ฌ์ฉํ์ฌ ๋ ํ ์ด๋ธ์ ํฉ์น ์ ์๋ค
=> ON ๋ค์ ๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ๋๋ ํค๊ฐ์ ์ ์ผ๋ฉด ๋จ
SELECT ํ
์ด๋ธ๋ช
1.์ด ์ด๋ฆ1, ํ
์ด๋ธ๋ช
2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 INNER JOIN ํ
์ด๋ธ๋ช
2
ON ํ
์ด๋ธ๋ช
1.KEY=ํ
์ด๋ธ๋ช
2.KEY;
4. INNER JOIN๊ณผ ๋ณ์นญ์ ์ฌ์ฉ
์ค๋ผํด์ ํฌํจํ ๋ช๋ช DBMS๋ ํ ์ด๋ธ๋ช ๋ณ์นญ์ ์ค ๋ AS ํค์๋๊ฐ ์ง์๋์ง ์์ผ๋ฏ๋ก
AS๋ฅผ ๋นผ๊ณ ํ ์ด๋ธ ๋ณ์นญ์ ์ค์ ํด์ผํจ!
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1(AS) ๋ณ์นญ1 INNER JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;



1. CUSTOMERS์ ORDERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด?
SELECT TMP1.CUST_ID, TMP1.CUST_NM, TMP2.ORDER_ID
FROM CUSTOMERS TMP1, ORDERS TMP2
WHERE TMP1.CUST_ID = TMP2.CUST_ID;
2. CUSTOMERS, ORDERS, EMPLOYEE ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ, ํ๋งค์ง์์์ด๋ ๋ฐ ํ๋งค์ง์์ด๋ฆ์ ๋ํ๋ด๋ ค๋ฉด?
SELECT TMP1.CUST_ID, TMP1.CUST_NM, TMP2.ORDER_ID, TMP2.EMP_ID, TMP3.NM
FROM CUSTOMERS TMP1
INNER JOIN ORDERS TMP2 ON TMP1.CUST_ID = TMP2.CUST_ID
INNER JOIN EMPLOYEE TMP3 ON TMP2.EMP_ID = TMP3.EMP_ID;
1. ์กฐ์ธ ์กฐ๊ฑด์ ์ง์ ํ์ง ์์ ์ฑ ๋ ํ ์ด๋ธ์ ์กฐ์ธํ๋ฉด ๊ณฑ์งํฉ์ด ๋๋ค
=> ์ด ๊ฒฝ์ฐ ๋ฐํ ๋๋ ํ์ ์๋ ์ฒซ ๋ฒ์งธ ํ ์ด๋ธ๊ณผ ๋ ๋ฒ์งธ ํ ์ด๋ธ์ ํ์ ์๋ฅผ ๊ณฑํ ์๊ฐ ๋๋ค
์ธ๋ถ ์กฐ์ธ
1. LEFT OUTER JOIN
์ผ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก, OUTER๋ฅผ ์๋ตํด๋ ๋ฌด๋ฐฉํ๋ค
(๋ง์ฝ ์ผ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง๋ง ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง ์๋ ํค๊ฐ์ด ์๋ค๋ฉด NULL๊ฐ์ผ๋ก ๊ฐ์ด ๋ฐํ๋จ)
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 LEFT (OUTER) JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;
2. RIGHT OUTER JOIN
์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก, OUTER๋ฅผ ์๋ตํด๋ ๋ฌด๋ฐฉํ๋ค
(๋ง์ฝ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง๋ง ์ผ์ชฝ ํ ์ด๋ธ์๋ ์กด์ฌํ์ง ์๋ ํค๊ฐ์ด ์๋ค๋ฉด NULL๊ฐ์ผ๋ก ๊ฐ์ด ๋ฐํ๋จ)
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 RIGHT (OUTER) JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;
3. FULL OUTER JOIN
FULL OUTER JOIN ํค์๋๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ด ๋ฐํ๋๋ค
=> ์ฆ, LEFT JOIN๊ณผ RIGHT JOIN์ ํฉ์ณ๋์ ํํ๋ผ๊ณ ๋ณผ ์ ์์
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 FULL (OUTER) JOIN ํ
์ด๋ธ๋ช
2 (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;



1. CUSTOMERS์ ORDERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ํ๋ด๊ณ ์ฃผ๋ฌธ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ์ 1, ์๋ ๊ณ ๊ฐ์ 0์ผ๋ก ํ์ํ ํ ๊ณ ๊ฐ์์ด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค๋ฉด?
SELECT TMP1.CUST_ID, TMP1.CUST_NM, TMP2.ORDER_ID,
CASE WHEN TMP2.CUST_ID IS NOT NULL THEN 1 ELSE 0 END AS ORDER_FLG
FROM CUSTOMERS TMP1 LEFT OUTER JOIN ORDERS TMP2
ON TMP1.CUST_ID = TMP2.CUST_ID
ORDER BY 1;
2. EMPLOYEE์ OREDERS, CUSTOMERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ง์์์ด๋, ์ด๋ฆ, ํด๋น ์ง์์ด ๋งก์๋ ์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ํ๋ด๊ณ ํด๋น ์ฃผ๋ฌธ๋ฒํธ์ ๊ณ ๊ฐ์์ด๋๋ฅผ ๋งค์นญ์์ผ ๊ณ ๊ฐ์ด๋ฆ์ ํ๊ธฐํ๋ ค๋ฉด?
SELECT TMP1.EMP_ID, TMP1.NM, TMP2.ORDER_ID, TMP2.CUST_ID, TMP3.CUST_NM
FROM EMPLOYEE TMP1 LEFT OUTER JOIN ORDERS TMP2 ON TMP1.EMP_ID = TMP2.EMP_ID
LEFT OUTER JOIN CUSTOMERS TMP3 ON TMP2.CUST_ID = TMP3.CUST_ID;
ORDER BY 1;
1. ํ ์ด๋ธ์ ํตํฉํ ๋ ๊ธฐ์ค์ด ๋๋ ํ ์ด๋ธ์ ๊ฐ์ฅ ๋จผ์ ๋ํ๋ด๋ฉด ๋ฐ์ดํฐ ๋ถ์์ด ์ฉ์ดํ๋ค
2. LEFT OUTER JOIN์ WHERE ์กฐ๊ฑด์ ์ *= ์ฐ์ฐ์๋ฅผ ํตํด ๋ํ๋ผ ์ ์๊ณ , RIGHT OUTER JOIN์ WHERE ์กฐ๊ฑด์ ์ =* ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ๋ํ๋ผ ์ ์๋ค
3. ACCESS, MY SQL ๋ฑ ๋ช๋ช DBMS์์๋ FULL OUTER JOIN ํค์๋๊ฐ ์ง์๋์ง X
4. ํ ์ด๋ธ ๋์ SELECT ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ํ ์ด๋ธ์ ๋ง๋ค ์ ์๋ค
=> ํ ์ด๋ธ ์ ์ฒด๋ฅผ ํฉ์น ์๋ ์๊ณ ํ ์ด๋ธ ์ผ๋ถ๋ง ํฉ์น ์๋ ์์
ex. FROM EMPLOYEE TMP1 LEFT OUTER JOIN (SELECT ORDER_ID, CUST_ID FROM ORDERS) TMP2
5. ํ ์ด๋ธ ๋ณ์นญ์ TMP1, TMP2, TMP3 ๋ฑ๊ณผ ๊ฐ์ด ์์ ์๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์
6. SELECT๋ฌธ์ ์ถ๋ ฅํ ์ด ์ด๋ฆ์ ์ ์ ๋ ์ด๋ ํ ์ด๋ธ์์ ์ฐธ์กฐ๋๋ ์ด ์ด๋ฆ์ธ์ง ๋ํ๋ด๋ ๊ฒ์ด ์ข์
ํ(Row) ํฉ์น๊ธฐ
UNION ์ฐ์ฐ์
1. UNION ์ฐ์ฐ์ ์ฌ์ฉ
UNION์ ๋ ๊ฐ ์ด์์ SELECT๋ฌธ์ ํ์ ํฉ์น๋ ์ญํ ์ ํจ
=> ORDER BY์ ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ํฉ์ณ์ง ํ ์ ์ฒด์ ์ ์ฉ๋จ!
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 FROM ํ
์ด๋ธ๋ช
1 WHERE ์กฐ๊ฑด์
UNION
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 FROM ํ
์ด๋ธ๋ช
2 WHERE ์กฐ๊ฑด์
ORDER BY 1;
2. UNION ALL ์ฐ์ฐ์ ์ฌ์ฉ
UNION ALL ์ฐ์ฐ์๋ ๋ ๊ฐ ์ด์์ SELECT๋ฌธ์ ํ์ ํฉ์น๋ ์ญํ ์ ํ๋ค
=> UNION ์ฐ์ฐ์์์ ์ฐจ์ด๋ UNION ALL์ ์ค๋ณต์ ํฌํจํ ๋ชจ๋ ๊ฐ์ ๋ํ๋ธ๋ค๋ ์ !
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2, FROM ํ
์ด๋ธ๋ช
1 WHERE ์กฐ๊ฑด์
UNION ALL
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2, FROM ํ
์ด๋ธ๋ช
2 WHERE ์กฐ๊ฑด์
ORDER BY 1;



1. CUSTOMERS์ EMPLOYEE ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ง์์ด๋ฆ๊ณผ ๊ณ ๊ฐ์ด๋ฆ์ ํฉ์ณ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด?
SELECT CUST_NM AS NM FROM CUSTOMERS
UNION
SELECT NM FROM EMPLOYEE
ORDER BY 1;
2. CUSTOMERS์ ORDERS ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ์ค๋ณต๊ฐ์ ํ์ฉํ ์ฑ ๊ณ ๊ฐ์์ด๋๋ฅผ ํฉ์ณ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด?
SELECT CUST_ID FROM CUSTOMERS
UNION ALL
SELECT CUST_ID FROM ORDERS
ORDER BY 1;
'๐ซง Database > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ๋ฐ ํ ์ด๋ธ ์กฐ์ (0) | 2024.02.29 |
---|---|
ํ์ ์ฟผ๋ฆฌ (2) | 2024.02.29 |
๋ฐ์ดํฐ์ ๊ทธ๋ฃนํ, ํํฐ๋ง (1) | 2024.02.27 |
SQL ํจ์ ํ์ฉํ๊ธฐ (0) | 2024.02.26 |
SQL ๊ธฐ๋ณธ ํจ์ ๋ฐฐ์ฐ๊ธฐ (2) | 2024.02.26 |