이 기사에서는 Mysql 왼쪽 조인, 오른쪽 조인, 내부 조인 및 조인의 사용법과 차이점에 대해 자세히 설명합니다.

전문

여러 Mysql 테이블 간의 연결은 다음과 같은 상황으로 나뉩니다.

left join , right join , inner join , join , "," 는 다른 연관 관계를 사용하여 다른 결과를 얻을 수 있습니다. 우리는 2개의 테이블을 직접 연결하면 결과의 수가 증가하거나 감소할 수 있음을 알고 있습니다. 이를 위해 2개의 테이블을 통해 설명하겠습니다. 결과를 보다 명확하게 하자면, 데이터를 구성할 때 두 테이블에는 서로 관련이 없는 데이터가 있습니다. 즉, 테이블 1의 특정 데이터는 테이블 2와 관련이 없으며 특정 데이터는 중국은 연결할 수 없습니다.

텍스트

준비

테이블 2개 만들기: 주제 테이블(subject), 스코어 테이블(score)

create table subject
(
    id      int         not null
        primary key,
    subject varchar(10) null comment '科目'
);
create table score
(
    id         int           not null
        primary key,
    score      int default 0 null comment '分数',
    subject_id int           not null comment '科目ID'
);

초기화 데이터 삽입

insert into school.subject (id, subject)
values  (1, '语文'),
        (2, '数学'),
        (3, '英语');
insert into school.score (id, score, subject_id)
values  (1, 10, 1),
        (2, 10, 1),
        (3, 30, 2),
        (4, 50, 5);

왼쪽 조인

왼쪽 조인을 사용하여 주제 ID로 2개의 테이블 연결 

select subject.*,s.* from subject left join score s on subject.id = s.subject_id;

결과:

 설명하다:

1. 왼쪽 테이블의 데이터는 존재하지만 오른쪽 테이블의 데이터는 존재하지 않는 경우 왼쪽 데이터를 기준으로 하고 오른쪽 테이블의 해당 필드는 null이 됩니다 
. 왼쪽 데이터가 오른쪽 데이터의 2개 항목과 연결되어 있으면 결과적으로 왼쪽 테이블에는 2개의 데이터가 있게 됩니다. 왼쪽 테이블의 데이터

왼쪽 조인 키가 null입니다.

select subject.* , s.* from subject left join score s on subject.id = s.subject_id where isnull(subject_id);

결과:

설명: 결과는 subject_id가 비어 있지 않은 데이터를 필터링하여 결과를 3가지 범주로 나눌 수 있습니다. 1. 모든 데카르트 곱 결과를 포함합니다. 2. 왼쪽 테이블에 있는 데이터를 포함하여 isnull 함수를 사용하지만, 오른쪽 테이블 데이터에 존재하지 않음 3. !isnull 함수를 사용하여 왼쪽 테이블과 오른쪽 테이블 모두에 존재하는 데이터 포함

오른쪽 조인

select subject.*,s.* from subject right outer join score s on subject.id = s.subject_id;

결과:

설명하다:

1. 오른쪽 테이블의 데이터는 존재하지만 왼쪽 테이블의 데이터는 존재하지 않는 경우 오른쪽 테이블의 데이터를 기준으로 하여 왼쪽 테이블의 해당 필드는 null이 됩니다. 제품이 생성됩니다 
.오른쪽 테이블의 데이터가 왼쪽 테이블 데이터의 동일한 항목과 연결되어 있으면 결과의 오른쪽 테이블에 있는 2개의 데이터가 왼쪽 테이블의 동일한 데이터와 연결됩니다. , 결과에 있는 2개의 데이터는 모두 언어 데이터이고, 오른쪽 테이블에 4개의 데이터가 있고, 그 중 하나는 왼쪽 테이블에 데이터가 존재하지 않고, 그 다음 왼쪽 테이블 테이블에 해당하는 필드 null이며 왼쪽 테이블의 영어는 결과에 나타나지 않습니다.

오른쪽 조인 키가 null입니다.

select subject.* , s.* from subject right  join score s on subject.id = s.subject_id where isnull(subject.subject);

결과:

 설명: 결과에서 subject.subject가 비어 있지 않은 데이터는 필터링되어 결과를 3가지 범주로 나눌 수 있습니다.

1. 모든 데카르트 곱 결과를 포함합니다.

2. isnull 함수를 사용하여 오른쪽 테이블에 포함된 데이터는 존재하지만 왼쪽 테이블에 포함된 데이터는 존재하지 않음

3. !isnull 함수를 사용하여 왼쪽 및 오른쪽 테이블에 모두 존재하는 데이터를 포함합니다.

가입하다 

select subject.*,s.* from subject join score s on subject.id = s.subject_id;

 결과:

설명: 두 테이블 모두에 존재하는 데이터만 유지되며, 이는 위의 "!isnull" 결과와 동일합니다. 즉, 테이블에 null 행이 없습니다.

내부 조인

select subject.*,s.* from subject inner join score s on subject.id = s.subject_id;

 결과:

 설명: 사실 조인을 쓰는 방식이다.

두 테이블은 ","로 연결됩니다.

select subject.*,s.* from subject , score s order by subject.id;

 작업 결과:

설명: 데카르트 곱 3 * 4 = 12개의 데이터가 생성됩니다.

 두 테이블을 교환하고 ","로 연결합니다.

select subject.*,s.* from score s , subject order by subject.id;

설명: 실행 결과는 위와 동일하며, ","와 연관되어 있고 왼쪽 및 오른쪽 위치와 관련이 없음을 나타냅니다.

추천

출처blog.csdn.net/zanpengfei/article/details/124328146