| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- framework
- Oracle
- SpringMVC
- JavaScript 내장객체
- js
- TodayILearned
- 자바스크립트
- springaop
- 서브쿼리
- 프레임워크
- 생활코딩
- 메이븐
- HTML
- 프로그레시브웹앱
- progressive web app
- maven
- javaprogramming
- sql
- CSS
- mybatis
- TIL
- 자바프로그래밍
- 스프링
- sqldeveloper
- web
- PWA
- 국비지원
- tdd
- javascript
- 오라클
- Today
- Total
1cm
자바 프로그래밍_Day_31_JOIN문 본문

2021. 10. 01
> JOIN
-> 하나 이상의 테이블에서 데이터를 조회하기 위해 사용하고, 수행 결과는 하나의 Result Set으로 나옴
-> 오라클 전용 구문 : 연결에 사용 할 두 컬럼 명이 다른 경우
-> 관계형 데이터베이스는 중복을 최소화 하기 위해 데이터를 쪼개서 관리한다. (직급 테이블, 부서명 등)
-> 테이블들의 관계를 이용해서 데이터들을 한번에 조회할 수 있다.
-> 무작정 데이터를 가져오는 것이 아닌 공통된 컬럼(값)의 데이터를 하나로 합쳐서 하나의 Result Set(결과 | 행)으로 나온다.
-> 데이터의 무결성 : 데이터가 일관되게 유지되는 것 >> 데이터가 다를 경우 무결성이 깨져버린다고 보면 된다.
-> ANSI 표준 구문 | 오라클 전용 구문
-> 오라클 전용 구문 : 오라클에서만 사용이 가능하다.
-> 연결에 사용할 두 컬럼 명이 같은 경우 '테이블 명.컬럼명' 으로 작성하여 구분한다.
-> FROM절에 사용한 테이블 별칭 이용이 가능하다.
-> ANSI 표준 구문 : 국가 표준이므로 가장 많이 사용하며, 어느 DBMS에서든 적용이 가능하다. (ex. mSQL, MySQL 등)
-> 연결에 사용하려는 컬럼 명이 같은 경우 USING()을 사용, 다를 경우 ON() 사용



-> 각 사원들의 사번, 사원명, 부서 코드, 부서명 조회 (각각)


-> 각 사원들의 사번, 사원명, 부서 코드, 직급명 조회 (각각)
> 등가 조인(EQUAL JOIN)

-> 오라클 구문 : 연결할 두 테이블의 컬럼명이 다른 경우


-> 에러발생 : SELECT절에 있는 JOB_CODE가 어떤 테이블의 컬럼(JOB_CODE) 인지 모호하기 때문에 오류 발생
-> "column ambiguously defined"
-> 앞에 테이블명을 붙여줌으로써 에러 해결할 수 있다.

> 내부 조인(INNER JOIN)

-> 연결할 두 컬럼명이 다른 경우
-> INNER JOIN은 INNER 생략이 가능하다.

-> 연결할 두 컬럼명이 같은 경우 두 가지 방법을 통해 조회할 수 있다.
-> 방법 1) USING 구문 이용

-> 방법 2) 테이블의 별칭 이용


-> 방법 3) NATURAL JOIN 이용(참고용)


-> EMPLOYEE 테이블과 JOB 테이블을 조인하여 직급이 대리인 사원의 사번, 사원명, 직급명, 급여를 조회


-> 실습문제 1) DEPARTMENT 테이블과 LOCATION 테이블을 조인하여 부서 코드, 부서 명, 지역 코드, 지역명을 조회
-> 오라클 구문에서의 조회하고자 하는 데이터의 조건은 WHERE 절에 적어주는 것이 표준기준에 명시되어 있다.


-> 실습문제 2) EMPLOYEE 테이블과 DEPARTMENT 테이블을 조인해서 보너스를 받는 사원들의 사번, 사원명, 보너스, 부서명을 조회


-> 실습문제 3) EMPLOYEE 테이블과 DEPARTMENT 테이블을 조인해서 인사관리부가 아닌 사원들의 사원명, 부서명, 급여를 조회


-> 실습문제 4) EMPLOYEE 테이블과 DEPARTMENT 테이블, LOCATION 테이블을 조인해서 사번, 사원명, 부서명, 지역명 조회
-> ANSI 구문 다중 조인 시, 순서가 중요하다. (연결(관련)된 컬럼값이 없을 때 JOIN 시도 시, 에러 발생)
> INNER JOIN / OUTER JOIN

-> 기본적으로 JOIN은 INNER JOION이며, 두 개 이상의 테이블을 조인할 때 일치하는 값이 없는 행은 조인에서 제외된다.
-> OUTER JOIN은 일치하지 않은 값도 포함이 되며, 반드시 OUTER JOIN을 명시해줘야 한다.
-> OUTER JOIN은 LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN 처럼 OUTER의 생략이 가능하다.
-> ANSI : 왼쪽, 오른쪽, 전체 테이블을 기준을 선언하고 구문을 나눠서 사용 -> 테이블을 기준으로 OUTER JOIN 설정
-> 오라클 : 왼쪽, 오른쪽, 전체 테이블을 나누지 않고 보여주고 싶은 해당 컬럼 쪽에 + 연산자를 사용해 주며, WHERE절에서 명시

> OUTER JOIN 종류
-> 1. LEFT OUTER JOIN
-> 합치기에 사용한 두 테이블 중 왼쪽에 기술된 테이블의 컬럼 수를 기준으로 JOIN할 때 사용


-> LEFT [OUTER] JOIN
-> 2. RIGHT OUTER JOIN
-> 합치기에 사용한 두 테이블 중 오른쪽에 기술된 테이블의 컬럼 수를 기준으로 JOIN할 때 사용


-> 3. FULL OUTER JOIN
-> 합치기에 사용한 두 테이블이 가진 모든 행을 결과에 포함시킬 때
-> ANSI 구문에서만 해당되며, 오라클 구문은 해당되지 않는다.


-> 오라클 구문은 OUTER JOIN을 하나밖에 지원을 해주지 않기 때문에 한 쪽에만 표시가 가능하다.
'국비지원_Java > Java Programming_1' 카테고리의 다른 글
| 자바 프로그래밍_Day_33_서브쿼리(SUBQUERY)(2) (0) | 2021.10.10 |
|---|---|
| 자바 프로그래밍_Day_32_JOIN문(2), 서브쿼리(SUBQUERY) (0) | 2021.10.09 |
| 자바 프로그래밍_Day_30_데이터베이스 구현 평가 (0) | 2021.10.09 |
| 자바 프로그래밍_Day_29_GROUP BY & HAVING (0) | 2021.10.06 |
| 자바 프로그래밍_Day_28_함수(Function)2 (0) | 2021.10.06 |