Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 조인이란 무엇입니까?

<시간/>

MySQL SELECT를 사용하여 한 번에 단일 테이블에서 정보를 검색할 수 있지만 하나의 테이블만으로는 모든 질문에 답할 수 없다는 것을 알고 있습니다. 따라서 위에서 언급한 목적, 즉 여러 테이블에 저장된 정보를 그리기 위해 Join 작업을 사용할 수 있습니다.

기본적으로 MySQL 조인은 두 개 이상의 테이블 사이의 공통 열 값을 기반으로 데이터를 연결하는 방법으로 결과적으로 새로운 임시 테이블이 생성됩니다. 다시 말해, MySQL 조인을 사용하면 새 임시 테이블에서 논리적으로 관련된 둘 이상의 테이블에서 레코드를 검색할 수 있다고 말할 수 있습니다. 새 임시 테이블은 두 테이블이 공유하는 열을 기반으로 생성되며, 이는 의미 있는 비교 열을 나타냅니다.

공통 값은 일반적으로 조인되는 참여 테이블 모두에 나타나는 동일한 열 이름 및 데이터 유형입니다. 이러한 열을 조인 키 또는 공통 키라고 합니다.

MySQL은 다음 유형의 조인을 지원합니다.

교차 조인

실제로 교차 조인은 조인의 기본 형식입니다. 두 개의 테이블이 있는 경우 table1의 각 행을 가져와 table2의 각 행에 추가합니다. 따라서 table1에 3개의 행이 있고 table2에 2개의 행이 있는 경우 이 테이블을 교차 조인한 후 총 6개의 행을 얻습니다. 이해를 돕기 위해 다음 데이터가 있는 tbl_1 및 tbl_2라는 두 테이블의 예를 사용합니다.

mysql> Select * from tbl_1;
+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Raman   |
| 4  | Aarav   |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from tbl_2;
+----+---------+
| Id | Name    |
+----+---------+
| A  | Aarav   |
| B  | Mohan   |
| C  | Jai     |
| D  | Harshit |
+----+---------+
4 rows in set (0.00 sec)

이제 아래 쿼리는 위에서 언급한 테이블 간에 CROSS JOIN을 수행합니다.

mysql> Select tbl_1.id, tbl_2.id FROM tbl_1 CROSS JOIN tbl_2;
+----+----+
| id | id |
+----+----+
| 1  | A  |
| 2  | A  |
| 3  | A  |
| 4  | A  |
| 1  | B  |
| 2  | B  |
| 3  | B  |
| 4  | B  |
| 1  | C  |
| 2  | C  |
| 3  | C  |
| 4  | C  |
| 1  | D  |
| 2  | D  |
| 3  | D  |
| 4  | D  |
+----+----+
16 rows in set (0.00 sec)

내부 조인 또는 동등 조인

내부 조인을 형성하려면 조인 술어로 알려진 특정 조건을 지정해야 합니다. 실제로 내부 또는 동등 조인은 일치하는 열 값을 갖기 위해 두 조인된 테이블의 행이 필요합니다. 이를 이해하기 위해 다음 쿼리는 'tbl_1' 및 'tbl_2'라는 이름의 테이블을 내부 조인합니다.

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

결과 집합은 tbl_1의 id =4와 tbl_2의 id ='A'에 대해 동일한 값을 갖는 열 이름을 보여줍니다.

왼쪽 조인

내부 조인에 필요한 것처럼 왼쪽 조인에도 조인 술어가 필요합니다. 차이점은 LEFT 조인을 사용하여 두 테이블을 조인할 때 왼쪽 테이블과 오른쪽 테이블의 개념이 도입된다는 것뿐입니다. 조인 조건자를 만족하는 행과 조인 조건자를 만족하지 않는 행을 포함하여 왼쪽 테이블의 모든 행을 반환합니다. 조인 술어와 일치하지 않는 행의 경우 결과 집합에서 오른쪽 테이블의 열에 NULL이 나타납니다. 이를 이해하기 위해 tbl_1 및 tbl_2 테이블을 사용하는 다음 쿼리에서 LEFT 조인을 수행합니다.

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+------+
| id | id   |
+----+------+
| 1  | NULL  |
| 2  | NULL  |
| 3  | NULL  |
| 4  | A     |
+----+------+
4 rows in set (0.02 sec)

오른쪽 조인

테이블 처리가 반대라는 점을 제외하고는 LEFT 조인과 유사합니다. RIGHT 조인을 사용하면 오른쪽 테이블의 모든 행이 결과 집합에 나타납니다. 왼쪽 테이블에 일치하는 행이 없는 오른쪽 테이블의 행의 경우 왼쪽 테이블의 열에 대해 NULL이 나타납니다. 이를 이해하기 위해 tbl_1 및 tbl_2 테이블을 사용하는 다음 쿼리는 RIGHT 조인을 수행합니다.

mysql> SELECT tbl_1.id,tbl_2.id
-> FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+------+----+
| id   | id |
+------+----+
| 4    | A  |
| NULL | B  |
| NULL | C  |
| NULL | D  |
+------+----+
4 rows in set (0.00 sec)