풀스택과정 DB - 조인 | JDBC CRUD
💡 2025 05 23
1. 조인이란?
2. Equi Join
3. Outer Join
4. Self Join
5. JDBC CRUD
조인
하나 이상의 테이블에서 질의를 던지는 경우 발생한다.
일반적인 경우 Primary Key와 Foreign Key 값의 연관에 의해서 발생한다.
Primary Key를 가지고 있는 테이블이 부모가 되고
Foreign Key를 가지고 있는 테이블이 자식이 된다.
Join의 종류는 여러 가지가 있지만 대표적으로 EQ Join, Self Join, Outer Join이 있다.
PK, FK의 관계 지정이 없어도 논리적인 값들의 연결만으로도 Join 작업을 할 수 있다.
Cartesian Product
SELECT * FROM emp, dept;
emp 와 dept 테이블의 수평적인 결합 14 * 4 = 56
- 조인조건을 생략했을때
- 조인조건을 잘못줬을때
EquiJoin(연산자를 사용하는 조인)
SELECT * FROM emp, dept
WHERE emp.deptno=dept.deptno;
-- Table Alias 방법
SELECT * FROM emp e, dept d
WHERE e.deptno=d.deptno;
조인 조건은 WHERE절에 사용
조인 조건은 두 테이블의 공통 컬럼으로 한다.
SELECT empno, ename, sal, deptno, dname, loc
FROM emp e, dept d
WHERE e.deptno=d.deptno;
--> ❌ 에러
SELECT empno, ename, sal, d.deptno, dname, loc
FROM emp e, dept d
WHERE e.deptno=d.deptno;
--> ✅
--> ❌ 에러
empno을 emp 테이블에서 찾고, deptno가서 empno을 또 찾는데 없으니까 return ✅
근데 deptno는 emp랑 deptno에 둘 다 있으니 에러 ❌
d.deptno 이렇게 해주면 된다.
이렇게 모든 컬럼에 Table Alias 명시해줘야 한다.
지정해주지 않으면 성능상 좋지 않다.
SELECT e.empno, e.ename, e.sal, d.deptno, d.dname, d.loc
FROM emp e, dept d
WHERE e.deptno=d.deptno;
✅ 이렇게 하면 된다 !
ON, USING
ON, USING 공통적인 컬럼
조인할 컬럼명이 같은 경우 : ON, USING 다 사용 가능
조인할 컬럼명이 다른 경우 : ON만 사용 가능
ON : AND절 뒤에 사용 가능
USING : AND 절 뒤에 사용 불가
USING은 동일한 필드를 2번 부르지 않는다는 장점이 있다.
오히려 모든 테이블에 공통적으로 들어있는 컬럼명 앞에는 테이블 Alias를 지정하지 않는다.
Right Join, Left Join
SELECT e.ename, e.deptno, d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno=d.deptno;
SELECT e.ename, e.deptno, d.dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno;
FULL OUTER JOIN
MySQL에서는 FULL OUTER JOIN 지원 ❌
대신 UNION(중복을 제외시킨 합집합) 사용
select sawonid from outera
UNION
select sawonid from outerb;
- UNION : 질의에 의해 선택된 모든 행을 포함한다. 중복 값은 한 번만 표시한다.
- UNION ALL : 모든 중복 행을 포함 질의에 의해 선택된 모든 행을 표시한다.
CTAS : Create Table As Select
: 기존의 테이블을 가지고 새로운 테이블을 생성할 때 사용
원본 테이블을 손상시키지 않기 위해 새로 복제하여 사용하는 것임.
CREATE TABLE newemp
AS (SELECT * FROM emp);
→ PK키와 같은 제약조건은 적용되지 않는다 !!
+ 내가 자주 보는 블로거 JOIN 게시물
[MYSQL] 📚 테이블 조인(JOIN) - 그림으로 알기 쉽게 정리
SQL JOIN JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주는, Relation Database 에서 가장 많이 쓰이는 녀석이다. (INNER) JOIN 조인하는
inpa.tistory.com
JDBC는 이전에 한 코드에서 예외처리 하는 방법 몇 가지 해봤다.
코드 실습으로 해서.. 너무 복잡해서 올리진 않겠다...
저장된걸로 나중에 플젝할때 꼭 잘 써먹어야겠다 (플젝때 중점적으로 한다고 함)