Emma.log()

SQL 조인 처리 과정 본문

DATA

SQL 조인 처리 과정

EverJunior Minjoo 2021. 8. 25. 19:13

select * from emp;

여기서 전체 emp 테이블 전체를 볼때 알렌이나 스미스의 부서 이름이 궁금할때

다시 select * from dept; 를 봐야 부서 이름을 볼 수 가 있는데 이걸 합쳐서 실행해볼 수 있다.

조인 이란?

- 디비에서 여러 테이블의 데이터가 필요한 경우 조인을 사용함

- 관계형 데이터베이스에서 데이터베이스를 테이블단위로 나누고 두테이블의 관계를 지정해서 처리하는것(릴레이션데이터베이스)

 이때 조인 이 필요함

- 해당 컬럼에 존재하는 기본키, 및 외래 키 열을 조인조건으로 사용하여 한 테이블의 행을 다른 테이블의 행에 조인 할 수 있다.

- 논리적인 값들의 연관만으로 조인 작업을 처리할 수 있다.

 

카티시안 곱

조인조건을 지정하지 않았을 때 두테이블을 무작위로 전부 붙여버리는것.

-첫 테이블의 모든 행이 두번째 테이블의  모든 행에 조인되어 처리됨

select player. player_name 선수명, team.team_name 팀명

from player, team;

 => 무작위로 전부 다 연결되서 결과가 나옴

- where 절이 없어서

 

조인문장

form 절에 사용할 테이블을 콤마로 구분해서 모두 적음

적절한 조인 조건을 where절에 지정함

테이블 개수-1 개의 조인조건이 필요함 [테이블이 3개면 2개의 조인조건]

일반적 PK, FK간의 조인인 경구 조건이 붙는 경우가 많음 - 아직 PK,FK 간 구분이 정확하지 않으면 논리적 값을 확인해야한다

 

select player.player_name 선수명, team.team_name 소속팀명

from player, team

where player.team_id = team.team_id ;

 

**조인조건 다음에 where 절에 조인조건 뒤에 다른 조건 붙여서 써줘도 된다.

 

테이블 별칭 지정하기

테이블 이름이 너무 길때 별칭을 지정할 수 있다.

from 절에 player P, team T 라고 써주면 player 테이블을 P로, team 테이블을 T 로 줄여서 쓸거야 라고 지정하는것

디비는 해석을 from 절을 해석하고 where 절을 해석한다.

( )

 

 

 

**테이블 두개를 붙여서 보여주세요 라는 가정을 WHERE절에서 진행함

[같은 부서끼리 테이블을 붙여서 내가 원하는 컬럼 , select 절에서 내가 원하는 ename, 과 부서명을 붙여서 확인 할 수있다.

 

조인을 이용한 자료조회

sal 값이 구간에 따라 등급을 뭐로 갖는지 확인

이때 구간에 속한 값을 찾는것이라서 컬럼의 값이 똑같지 않아서 sal 값이 어디 안에 어느 구간에 들어가는지 봐야 해서 조인 조건이 '=' 말고 달라짐

 

ename s 테이블은 전부다 보겠다 s.*

 

outer 조인

where 절 조건을 만족하는 테이블만 붙여서 나오게 됬는데 하지만 결과에 빠져서 안나오는 결과가 나올 수 있다.

이런 빠진 데이터를 추가해서 보여주는 것 = outer 조인

- 반대 쪽 조인 조건에  '(+)' 연산자를 추가해서 붙여서 사용

 

 

'DATA' 카테고리의 다른 글

Mysql 유저생성, 권한부여, db 생성  (0) 2022.12.01
Mysql cmd로 시작하기  (0) 2022.12.01
SQL 윈도우함수  (0) 2021.08.25
SQL 그룹함수  (0) 2021.05.30
SQL 일반함수  (0) 2021.05.30