26 Fri
๋ฐ์ดํฐ ๋ถ์์ ์ํ ์ค๊ธ SQL
๋ ๊ฐ ์ด์ ํ
์ด๋ธ ๊ฒฐํฉํ๊ธฐ
JOIN
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ RDB, Relational DataBase ๋ผ๊ณ ํ๋ค.
๋ฐ์ดํฐ๊ฐ์ ๊ด๊ณ์ฑ์ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ/๋ถ๋ฆฌ ํ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค
ํ ํ ์ด๋ธ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ฉด ์ค๋ณต๋๋ ๋ฐ์ดํฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด์ง ์๋ค. ์ด๋ฅผ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํ๋ค.
์ด ํ, ๋ถ๋ฆฌ๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ ๋ JOIN์ ์ฌ์ฉํด์ผ ํ๋ค
INNER JOIN
SELECT *
FROM Customers, Orders
๋ค์๊ณผ ๊ฐ์ด ๋ ํ ์ด๋ธ์ ํฉ์น๋ฉด ๊ต์ฅํ ๋ง์ ์ค๋ณต์ด ๋ฐ์ํ๊ฒ ๋๋ค.
๋ ํ ์ด๋ธ์ ํฉ์น๋ ๊ฒ์ Combination ํ๋ค๊ณ ํ๋ค
๋ค์์ ๋ ํ ์ด๋ธ์ ๊ฒฐํฉํ ๊ฒฐ๊ณผ์ ์ผ๋ถ
์กฐ๊ธ์ ์ฐจ์ด๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ธฐ ์ํด ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ด ํ์๋๋ ๋ชจ์ต

๋ฐ๋ผ์ ์ด๋ฌํ ์ค๋ณต์ ์์ ๊ณ ๊ณตํต๋ ์ ๋ณด๋ง ์ป๊ณ ์ถ์ ๋
INNER JOIN
์ ์ฌ์ฉํ๋ค.

SELECT *
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
WHERE
๋ฌธ๋ฒ์ ํตํด ๋์ผํ ์ปฌ๋ผ์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ด์ ๋ ์ ์ฐ์ด์ง ์๋ ๋ฐฉ๋ฒ์ด๋ค
SELECT *
FROM Customers
INNER JOIN Orders ON Customers.CustomerId = Orders.CustomerID
๋ค์๊ณผ ๊ฐ์ด ์์ฝ์ด
INNER JOIN ~ ON
์ ์ฌ์ฉํ ์ ์๋ค์์ชฝ ํ ์ด๋ธ์ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๋๋ง ์ฌ์ฉ๊ฐ๋ฅ ํ๋ค.
์ด ๋ Join ํ๋ Key๊ฐ์ name์ด ๋ค๋ฅผ ์ ์๋ค.
๋๊ฐ์ ์ปฌ๋ผ์ผ์ง๋ผ๋ Orders๋ CustomerID, Customers๋ ID๋ก ๋์ด์์ ์ ์๋ค.
์ด๋ ๊ณ ๊ธ์์ ๋ค๋ฃฐ ๋ด์ฉ => ERD, Entity Relational Diagram
OUTER JOIN
INNER JOIN
์ ์ ์ธํ๊ณ ๋ ๋ชจ๋OUTER JOIN
LEFT, RIGHT, FULL
์ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.LEFT JOIN
๊ณผLEFT OUTER JOIN
์ ๋์ผํ ๋ช ๋ น์ด์ด๋คRIGHT
์FULL
๋ ๋ง์ฐฌ๊ฐ์ง
LEFT JOIN

SELECT *
FROM Customers
LEFT JOIN Orders ON Orders.CustomerID = Customers.CustomerID
WHERE OrderID IS NULL
-- Order ํ
์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅ --
RIGHT JOIN

๊ทธ๋ฌ๋
RIGHT JOIN
์ ์ ์ฐ์ง ์๋๋ค.์์๋ง ๋ฐ๊พธ๋ฉด
LEFT JOIN
๊ณผ ๋์ผํ๊ธฐ ๋๋ฌธํด์์ ์ผ๋ก
RIGHT JOIN
์ด ๋น๊ต์ ์ด๋ ค์ด ๋ถ๋ถ์ด ์๋คw3school ์์๋ right์ full์ ์ง์ํ์ง ์์
SELF JOIN
LEET CODE 181
# Write your MySQL query statement below
select e.name as Employee
from employee as e
inner join employee as m on e.managerid = m.id
where e.salary > m.salary
table ํ๋๋ฅผ joinํด์ ์๋ก ๋ค๋ฅธ table์ธ ๊ฒ์ฒ๋ผ ์ฌ์ฉ
์ฃผ๋ก
as
๋ฅผ ํตํด ๊ตฌ๋ณํ๋ ๊ฒ์ด ์ข๋ค
์๊ฐ ๋ํ๊ธฐ ๋นผ๊ธฐ
LEET CODE 197
# Write your MySQL query statement below
select n.id
from weather as y
inner join weather as n on date_add(y.recorddate, interval 1 day) = n.recorddate
where y.temperature < n.temperature
DATE_ADD(๊ธฐ์ค๋ ์ง, INTERVAL)
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)
SECOND
๋์MINUTE, HOUR, DAY, MONTH, YEAR
์ฌ์ฉ๊ฐ๋ฅ
DATE_SUB(๊ธฐ์ค๋ ์ง, INTERVAL)
DATE_ADD
์ ๋์ผ
๊ทธ๋ฌ๋
INTERVAL
์ ์์๋ฅผ ๋ฃ์ผ๋ฉดADD
์์๋SUB
์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์
Last updated
Was this helpful?