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

MySQL이 두 테이블을 조인합니까?

<시간/>

먼저 두 개의 테이블을 만들고 외래 키 제약 조건으로 조인해 보겠습니다. 첫 번째 테이블을 생성하는 쿼리는 다음과 같습니다. -

mysql> create table ParentTable
   -> (
   -> UniqueId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> EmployeeName varchar(10)
   -> );
Query OK, 0 rows affected (0.56 sec)

삽입 명령을 사용하여 첫 번째 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into ParentTable(EmployeeName) values('John');
Query OK, 1 row affected (0.15 sec)
mysql> insert into ParentTable(EmployeeName) values('Carol');
Query OK, 1 row affected (0.32 sec)
mysql> insert into ParentTable(EmployeeName) values('Sam');
Query OK, 1 row affected (0.18 sec)
mysql> insert into ParentTable(EmployeeName) values('Bob');
Query OK, 1 row affected (0.19 sec)

이제 select 문을 사용하여 테이블의 모든 레코드를 표시할 수 있습니다. 쿼리는 다음과 같습니다 -

mysql> select *from ParentTable;

다음은 출력입니다 -

+----------+--------------+
| UniqueId | EmployeeName |
+----------+--------------+
|        1 | John         |
|        2 | Carol        |
|        3 | Sam          |
|        4 | Bob          |
+----------+--------------+
4 rows in set (0.00 sec)

외래 키 제약 조건이 있는 두 번째 테이블을 생성하는 쿼리는 다음과 같습니다. -

mysql> create table ChildTable
   -> (
   -> UniqueId int NOT NULL PRIMARY KEY,
   -> EmployeeAddress varchar(100),
   -> CONSTRAINT fk_uniqueId FOREIGN KEY(UniqueId) references ParentTable(UniqueId)
   -> );
Query OK, 0 rows affected (0.54 sec)

이제 삽입 명령을 사용하여 두 번째 테이블에 일부 레코드를 삽입합니다. 쿼리는 다음과 같습니다 -

mysql> insert into ChildTable values(1,'15 West Shady Lane Starkville, MS 39759');
Query OK, 1 row affected (0.19 sec)
mysql> insert into ChildTable values(2,'72 West Rock Creek St. Oxford, MS 38655');
Query OK, 1 row affected (0.18 sec)
mysql> insert into ChildTable(UniqueId) values(3);
Query OK, 1 row affected (0.41 sec)
mysql> insert into ChildTable values(4,'119 North Sierra St. Marysville, OH 43040');
Query OK, 1 row affected (0.16 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from ChildTable;

다음은 출력입니다 -

+----------+-------------------------------------------+
| UniqueId | EmployeeAddress                           |
+----------+-------------------------------------------+
|        1 | 15 West Shady Lane Starkville, MS 39759   |
|        2 | 72 West Rock Creek St. Oxford, MS 38655   |
|        3 | NULL                                      |
|        4 | 119 North Sierra St. Marysville, OH 43040 |
+----------+-------------------------------------------+
4 rows in set (0.00 sec)

이제 왼쪽 조인을 사용하여 테이블을 조인해 보겠습니다. 쿼리는 다음과 같습니다 -

mysql> select ParentTable.UniqueId,ParentTable.EmployeeName,ChildTable.EmployeeAddress from
ParentTable left join
   -> ChildTable on ParentTable.UniqueId=ChildTable.UniqueId;

다음은 출력입니다 -

+----------+--------------+-------------------------------------------+
| UniqueId | EmployeeName | EmployeeAddress                           |
+----------+--------------+-------------------------------------------+
|        1 | John         | 15 West Shady Lane Starkville, MS 39759   |
|        2 | Carol        | 72 West Rock Creek St. Oxford, MS 38655   |
|        3 | Sam          | NULL                                      |
|        4 | Bob          | 119 North Sierra St. Marysville, OH 43040 |
+----------+--------------+-------------------------------------------+
4 rows in set (0.00 sec)