SQL, Database
SQL: JOIN
by yj-data
2025. 8. 13.
종류 6개: INNER JOIN, LEFT, RIGHT, OUTER, SELF, CROSS
SELECT u.ui, u.un, a.an
FROM user u
JOIN addr a
ON u.ui = a.ui;
-- 줄이기(inner join 에서만 됨)
SELECT u.ui, u.un, a.an
FROM user u, addr a
WHERE u.ui = a.ui;
-- 여기다가 조건 추가하기, 그런경우 where 에다가 붙임
WHERE u.ui = a.ui and u.un <> 'A'; -- and 후에 조건을 붙임으로서 추가함. (<> 는 !=와 같으며 표준sql은 <> 를 권장)
--여러개 INNER JOIN 줄이기
SELECT co.code, co.name, ci.name, ci.population, lang.countrycode, lang.language, lang.percentage, round(ci.population * lang.percentage/100) AS lp
FROM country co, city ci, countrylanguage lang
WHERE co.code = ci.countrycode AND co.code = lang.countrycode;
-- LEFT
SELECT u.ui, u.un, a.an
FROM user u
LEFT JOIN addr a
ON u.ui = a.ui;
-- RIGHT
SELECT a.ui, u.un, a.an -- u.ui 를 a.ui로 변경함
FROM user u
RIGHT JOIN addr a
ON u.ui = a.ui;
-- OUTER
-- ORACLE은 OUTER 없음. 대신 UNION으로 해결함. LEFT + RIGHT를 UNION으로 하면 중복된거 없어지면서 OUTER와 똑같아짐(A+B-A교B와 같은 방식)
SELECT a.ui, u.un, a.an
FROM user u
OUTER JOIN addr a
ON u.ui = a.ui;