본문 바로가기

mysql

MySQL 관계형데이터베이스의 꽃 JOIN(조인)

728x90
반응형

<데이터베이스명 opentutorials>

use opentutorials;

아래 사진은 조인을 하기위한 테이블을 생성하였음.

조인은 테이블끼리 결합시킨다.

topic의 author_id값과 author의 id값이 동일한 것을 눈으로 확인이 가능하다.

-테이블 조인시키기

SELECT * FROM [테이블1] LEFT JOIN [테이블2] ON [테이블1].[테이블1에 있는 1,2의 동일컬럼]

= [테이블2].[테이블2에 있는 1,2의 동일컬럼] ; (노랑부분 동일값)

-노랑부분을 제외한 볼컬럼들만 select로 출력한다.

SELECT topic.id,title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id=author.id;

-id가 애매모호하다 생각이 들기때문에 topic테이블의 id라고 지정해준다.

SELECT topic.id AS topic_i, title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id=author.id;

조인이란?

- 두 개 이상의 테이블 들을 연결 또는 결합하여 데이터를 출력하는것

- JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능이라고 할 수 있다.

- 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다.

- 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다.

최대장점 각 테이블의 중복된 컬럼값을 하나로 묶어준다!

아래는 다른 데이터베이스와 테이블로 2~3개의 컬럼을 묶어주는 실습을 해보자.

-실습세팅

데이터베이스명 joinex;

테이블 3개 author , profile, topic

<LEFT JOIN의 실습 제일 많이 쓰는 JOIN>

SELECT * FROM [왼쪽에 둘 테이블1] LEFT JOIN [테이블1 오른쪽에 둘 테이블2] ON

- > [테이블1].[테이블1에 있는 1,2의 동일컬럼] = [테이블2].[테이블2에 있는 1,2의 동일컬럼] ;

3개이상의 테이블 조인도 위와같이 붙여서 사용하면 된다.

아래예제의 순서는 아래가 같다.

-2개테이블 LEFT JOIN 시켰을때

-3개테이블 LEFT JOIN 시켰을때

-3개테이블 LEFT JOIN 시키며 필요없는 컬럼은 기입하지않고 출력시켰을 때

*조인을 시켰는데 테이블1의 컬럼중 테이블2와 겹치지않는 데이터가 있다면 NULL로 출력된다.

<INNER JOIN의 실습 A테이블과 B테이블의 교집합>

SELECT * FROM [테이블1] INNER JOIN [테이블2] ON

- > [테이블1].[테이블1에 있는 1,2의 동일컬럼] = [테이블2].[테이블2에 있는 1,2의 동일컬럼] ;

3개이상의 테이블 조인도 위와같이 붙여서 사용하면 된다.

아래예제의 순서는 아래가 같다.

-2개테이블 INNER JOIN 시켰을때

-3개테이블 INNER JOIN 시켰을때

*조인을 시켰는데 테이블1, 테이블2와 겹치지않는 데이터가 있다면 NULL로도 나오지않으며, 둘이 동일되는 컬럼의 ROW들만 표에 출력된다.

이외에 FULL JOIN과 EXCLUSIV JOIN도 존재하지만 사용을 안하고 지원을안하는 데이터베이스도 많기때문에

검색엔진을 통해 각자 이해만 하고 넘어가는 것이 효율적일것 같다.

728x90
반응형

'mysql' 카테고리의 다른 글

(SQL)서브쿼리정리  (0) 2023.12.14
MYSQL 데이터베이스 기본 문법 및 용어 간략정리  (0) 2023.12.14