>  기사  >  데이터 베이스  >  SQL에서 조인을 사용하는 방법

SQL에서 조인을 사용하는 방법

伊谢尔伦
伊谢尔伦원래의
2016-12-03 10:37:231397검색

sql 문의 조인 키워드는 흔히 사용되는 키워드이지만 이해하기 쉽지 않습니다. 다음 예에서는 table1, table2 테이블 생성을 간단히 설명합니다.
create table table1(id int,name varchar (10))
테이블 생성 table2(id int,score int)
insert into table1 선택 1,'lee'
insert into table1 선택 2,'zhang'
insert into table1 선택 4, 'wang'
insert into table2 select 1,90
insert into table2 select 2,100
insert into table2 select 3,70
표에 표시된 대로
--- ----- -------------------
테이블1 | 테이블2 |
----------------------------------------------- ----- -----
아이디 이름 |아이디 점수 |
1 리 |1 90 |
2 장 |2 100 |
4 왕 |3 70 |
- ----- ------------------- --

다음은 모두 쿼리 분석기에서 실행됩니다

1. 외부 조인
1. 개념: 왼쪽 외부 조인, 오른쪽 외부 조인 또는 완전 외부 조인 포함

2. 왼쪽 조인: 왼쪽 외부 조인
(1) 왼쪽 외부 조인의 결과 집합에는 조인 열과 일치하는 행뿐만 아니라 LEFT OUTER 절에 지정된 왼쪽 테이블의 모든 행이 포함됩니다. 왼쪽 테이블의 행에 오른쪽 테이블의 일치하는 행이 없으면 오른쪽 테이블의 모든 선택 목록 열은 연결된 결과 집합 행에서 null이 됩니다.
(2)sql 문
select * from table1 왼쪽 조인 table2 on table1.id=table2.id
-------------결과--------- ------
ID 이름 ID 점수
----------------------
1 리 1 90
2 장 2 100
4 왕 NULL NULL
---------------------------- ------
참고: table1의 모든 절을 포함하고, 지정된 조건에 따라 table2의 해당 필드를 반환하며, 충족되지 않으면 null을 표시합니다

3. 오른쪽 조인: 오른쪽 조인 또는 오른쪽 외부 조인
(1) 오른쪽 외부 조인은 왼쪽 외부 조인의 역조인입니다. 오른쪽 테이블의 모든 행이 반환됩니다. 오른쪽 테이블의 행과 왼쪽 테이블의 일치하는 행이 없으면 왼쪽 테이블에 대해 null이 반환됩니다.
(2)sql 문
table1에서 *를 선택하고 table1.id=table2.id에서 table2를 조인합니다
------------결과--------- ------
ID 이름 ID 점수
----------------------
1 리 1 90
2 장 2 100
NULL NULL 3 70
---------------------------- ------
참고: table2의 모든 절을 포함하고 지정된 조건에 따라 table1의 해당 필드를 반환하며 충족되지 않으면 null을 표시합니다

4. 완전 외부 조인 또는 완전 외부 조인
(1 ) 완전 외부 조인은 왼쪽 및 오른쪽 테이블의 모든 행을 반환합니다. 행에 다른 테이블에 일치하는 행이 없으면 다른 테이블의 선택 목록 열에 Null 값이 포함됩니다. 테이블 간에 일치하는 행이 있는 경우 전체 결과 집합 행에는 기본 테이블의 데이터 값이 포함됩니다.
(2)sql 문
select * from table1 완전 조인 table2 on table1.id=table2.id
------------결과--------- ------
ID 이름 ID 점수
----------------------
1 리 1 90
2 장 2 100
4 왕 NULL NULL
NULL NULL 3 70
------ --- -------
참고: 왼쪽 및 오른쪽 조인의 합계를 반환합니다(위의 왼쪽 및 오른쪽 조인 참조)

2. 내부 조인
1. 비교 연산자를 사용하여 비교합니다. 조인 열 값

2. 내부 조인: 조인 또는 내부 조인

3.sql 문
select * from table1 조인 table2 on table1.id=table2 .id
-------------결과-------------
ID 이름 ID 점수
--------- -- -----
1 리 1 90
2 장 2 100
--------------- ---
참고: 조건에 맞는 table1과 table2의 열만 반환

4. 동등(다음과 실행 효과 동일)
A:table1에서 a.*,b.* 선택 a,table2 b 여기서 a.id=b.id
B:select * from table1 교차 조인 table2 where table1.id=table2.id(참고: cross Join 사후 조건은 where, not on)

3. Cross-join(완료)

1. 개념: WHERE 절이 없는 Cross Join은 테이블을 생성합니다. Cartesian product에 참여합니다. 첫 번째 테이블의 행 수에 두 번째 테이블의 행 수를 곱한 값은 데카르트 곱 결과 집합의 크기와 같습니다. (table1과 table2의 Cross Join은 3*3=9개의 레코드를 생성합니다.)

2. Cross Join: Cross Join(조건 없음...)

3.sql문
table1 교차 조인 table2에서 * 선택
-------------결과-------------
id 이름 id 점수
--- -------------
1 리 1 90
2 장 1 90
4 왕 1 90
1 리 2 100
2 장 2 100
4 왕 2 100
1 리 3 70
2 장 3 70
4 왕 3 70
------ -- --------
참고: 3*3=9 레코드, 즉 데카르트 곱

4.etc을 반환합니다. (다음 실행 효과와 동일)
A:select * from table1,table2


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.