일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Java
- maven
- REST
- db
- Aspect
- 인텔리제이
- datagrip 한글깨짐
- tecoble
- InteliJ
- javascript error
- svn
- class-transformer
- @RequestBody
- node.js
- eqauls-hashcode
- oracle
- SQL
- Spring
- ojdbc6
- Stream
- JavaScript
- DART
- Mac
- 코어자바스크립트
- flutter mac 설치
- 프로그래머스
- TypeScript
- MySQL
- 봤어요처리
- 프로젝트 여러 개
- Today
- Total
개발자가 되고 싶은 개발자
[Oracle] Join 본문
오랜만에 글을 작성해봅니다.
업무 파악을 위해 분석기간에 투입되어 업무를 배우고,
이제 슬슬 설계단계에 오다 보니 DB를 볼 일이 많아졌습니다.
실무에서의 쿼리문을 보니 학교에서 자바를 배우고 처음 실무에서 스프링을 접할 때 느낌이었습니다.
(이게 뭐지...? 내가 배운 자바는, DB는 이게 아닌데!)
보통 한 테이블에 몇 십개의 컬럼은 기본이고, JOIN도 끝이 보이지 않은 AND로 이어져있었습니다.
우선 익숙치 않은 테이블 명들이 화면을 채우고 있으니, 그냥 단순 나열되어 있는거지만 일단 당황부터...
그래서 더 늦기전에 조인의 개념에 대해 다시 정리해보려고 합니다.
https://www.dofactory.com/sql/join
dofactory 라는 사이트를 통해 조인에 대해 정리해보도록 하겠습니다.
(영어는 못하지만 자주 찾아보다 보면, 보통 비슷한 맥락들이 많아서 구글신과 함께 하면 생각보다는 잘 읽히는 것 같습니다.
그 핑계라고 영어공부를 안하는 나아는 진짜...)
<개념 >
- 조인은 두 테이블의 레코드를 결합합니다.
- 레코드는 행을 뜻합니다. 로우 또는 튜플이라고도 불립니다. (사람마다, 문서마다 다르게 표현되니 셋 다 외워두시는게 좋습니다.)
- 조인은 두 테이블 안의 연관된 컬럼 값을 찾습니다. 컬럼은 어트리뷰트(attribute)라고도 불립니다.
- 쿼리에는 조인 연산이 없을수도 있고, 한 개 혹은 여러개의 조인 연산이 있을 수 있습니다.
- Inner Join(내부조인)은 Join과 같습니다. Inner키보드는 적어도, 안적어도 됩니다.
<종류>
주로 사용되는 조인의 종류에는 4가지가 있습니다.
- 일반적으로 사용되는 INNER JOIN = 내부 조인 = 조인 (INNER을 생략하기도 합니다.)
- LEFT JOIN = LEFT OUTER JOIN
- RIGHT JOIN = RIGHT OUTER JOIN
- FULL JOIN = FULL OUTER JOIN
LEFT, RIGHT, FULL사이에는 OUTER가 들어갑니다. INNER, OUTER은 선택적으로 넣어줍니다.
아래의 벤 다이어그램을 보면 쉽게 이해가 가실겁니다.
<예시>
참조한 링크의 예시를 번역해서 위에서 보셨던 조인의 종류들을 알아보겠습니다.
주문 테이블 |
ID (KEY) |
주문일자 |
주문번호 |
고객아이디 |
총주문 |
고객 테이블 |
ID (KEY) |
성 |
이름 |
주문번호 |
전화번호 |
다시 정리해보자면, 조인은 서로 다른 두 테이블을 하나의 테이블 처럼 엮어서 추출할 때 사용합니다.
그 중 내부조인(INNER JOIN)은 두 테이블의 공통적인 값을 추출할 때 사용합니다.
(INNER, 내부의 뜻은 위 그림의 '벤 다이어그램의 안(내부)'를 생각하시면 됩니다. )
SELECT 주문번호, 성, 이름
FROM 주문테이블 JOIN 고객테이블
ON 주문테이블.주문번호 = 고객테이블.주문번호
위처럼 작성할 수 있겠습니다.
'Dev > DataBase' 카테고리의 다른 글
[SQL] Subquery error (0) | 2020.10.29 |
---|---|
[Mybatis] If문 Null 처리 (0) | 2020.10.26 |
[Oracle] ORA-00918 (0) | 2020.06.24 |
[Oracle] ojdbc (0) | 2020.03.24 |
[Oracle] Issue (0) | 2020.02.24 |