MariaDB SQL

MariaDB Join

ssamhago 2023. 6. 7. 16:20
728x90
320x100

MariaDB Join

 

 

MariaDB join 절을 사용하여 여러 테이블에서 데이터를 select 하는 방법을 배웁니다.

 

 

지금까지 간단한 select 문을 사용하여 단일 테이블에서 데이터를 검색하는 방법을 배웠습니다.

여러 관련 테이블에서 데이터를 선택하려면 join 절과 함께 select 문을 사용합니다. join 절은 지정된 조건에 따라 한 테이블의 행을 다른 테이블의 행과 연결합니다.

MariaDB는 inner join, left joinright joincross join 과 같은 다양한 종류의 join 을 지원합니다.

MariaDB는 full outer join 또는 full join 을 지원하지 않습니다.

조인 절을 시연하기 위해 샘플 데이터베이스의 guestsvips 테이블을 사용합니다.

guests 테이블:

select * from guests;

guests

 

vips 테이블 :

select * from vips;

vips

 

 

 

MariaDB inner join

 

두 개의 테이블 t1과 t2를 조인한다고 가정합니다. 다음은 두 테이블을 조인하는 inner join 절의 구문을 보여줍니다.

select select_list
from t1
inner join t2
    on join_condition;

inner join 은 테이블 t1의 각 행을 테이블 t2의 모든 행과 비교합니다.

 

두 행의 값으로 인해 join 조건이 true로 평가되면 inner join 은 선택 목록에서 지정한 두 행의 열을 포함하는 열이 있는 새 행을 만들고 이 새 행을 결과 집합에 포함합니다.

일반적으로 등호 연산자(=)를 사용하여 테이블 t1의 행을 테이블 t2의 행과 일치시킵니다.

select select_list
from t1
inner join t2
    on t2.column1 = t1.column2;

사용되는 열의 이름이 동일한 경우 다음과 같이 using 절 구문을 사용할 수 있습니다.

select select_list
from t1
inner join t2 using (column);

 


다음 예에서는 inner join 을 사용하여 guestsvips 테이블 모두에 나타나는 사람을 찾습니다.

select
    g.guest_id,
    g.name,
    v.vip_id,
    v.name
from guests g
inner join vips v
    on v.name = g.name;

inner join

 

테이블 vipsguests 모두에서 일치하는 행에 대한 열의 이름이 같기 때문에 다음과 같이 using 절 구문을 사용할 수 있습니다.

select
    g.guest_id,
    g.name,
    v.vip_id,
    v.name
from guests g
inner join vips v using (name);

 

다음 그림은 inner join 을 보여줍니다.

inner join

 

 

 

MariaDB left join

 

 

left join 은 왼쪽 및 오른쪽 테이블의 개념을 말합니다.

t1 및 t2가 각각 왼쪽 및 오른쪽 테이블임을 나타냅니다.

다음은 left join 의 구문을 보여줍니다.

select select_list
from t1
left join t2
    on join_condition;

 

inner join 과 유사하게 등호 연산자(=)를 사용하여 행을 일치시키고 일치에 사용된 열의 이름이 동일한 경우 using 절 구문을 사용할 수 있습니다.

select select_list
from t1
left join t2 using (column_name);


left join 은 왼쪽 테이블에서 시작하여 데이터를 검색합니다. 왼쪽 테이블(t1)의 각 행을 오른쪽 테이블(t2)의 모든 행과 비교합니다. 두 행 모두 조인 조건이 true로 평가되면 left join 은 선택 목록에서 지정한 두 행의 열을 포함하는 열이 포함된 새 행을 만듭니다.

left join 이 오른쪽 테이블에서 일치하는 행을 찾지 못하면 왼쪽 테이블의 행 열과 오른쪽 테이블 행의 열에 대한 null 값을 포함하는 열이 포함된 새 행을 생성합니다.

간단히 말해서 left join 은 오른쪽 테이블에서 일치하는 행이 있는지 여부에 관계없이 왼쪽 테이블(t1)에서 모든 행을 검색합니다.

다음 예에서는 left join 을 사용하여 vips 테이블과 guests 테이블을 조인합니다.

select
    g.guest_id,
    g.name,
    v.vip_id,
    v.name
from guests g
left join vips v
    on v.name = g.name;

left join

 

다음 쿼리는 using 구문을 사용합니다.

select
    g.guest_id,
    g.name,
    v.vip_id,
    v.name
from guests g
left join vips v
    using(name);

 

다음 그림은 left join 을 보여줍니다.

left join

 

 

 

 

MariaDB right join

 

right join  left join 의 반대 버전입니다.

select select_list
from t1
right join t2 on join_condition;

 

예를 들어 다음 명령문은 right join 절을 사용하여 guests 테이블을 vips 테이블과 조인합니다.

select
    g.guest_id,
    g.name,
    v.vip_id,
    v.name
from guests g
right join vips v
    on v.name = g.name;

right join

 

다음 그림은 right join 을 보여줍니다.

right join

 

 

 

 

MariaDB cross join

 

cross join 은 조인된 테이블의 행에 대한 데카르트 곱을 만듭니다.

inner join, left join 및 right join 과 달리 cross join 에는 조인 술어가 없습니다.

select select_list
from t1
cross join t2;


이 구문에서 cross join 은 t1 테이블의 각 행을 t2 테이블의 모든 행과 결합하여 결과 집합을 형성합니다.

t1에 n개의 행이 있고 t2에 m개의 행이 있는 경우 t1과 t2의 cross join  n x m개의 행이 됩니다.

다음 예에서는 cross join 을 사용하여 vips 테이블로 guests 테이블을 조인합니다.

select
    g.guest_id,
    g.name,
    v.vip_id,
    v.name
from guests g
cross join vips v;

25개 행(5×5)을 반환합니다.

 

 

이상으로 MariaDB join 절을 사용하여 여러 테이블에서 데이터를 select 하는 방법을 알아봤습니다.

 

 

※ 원문 출처 : A Visual Explanation of MariaDB Joins with Practical Examples (mariadbtutorial.com)

728x90
반응형

'MariaDB SQL' 카테고리의 다른 글

MariaDB Left Join  (0) 2023.06.13
MariaDB Inner Join  (0) 2023.06.08
MariaDB Is Null  (0) 2023.06.05
MariaDB Limit  (0) 2023.05.30
MariaDB in  (0) 2023.05.25