Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 두 테이블을 한 번의 SELECT 쿼리로 조회하는 방법

네, 가능합니다. MySQL에서는 FROM 절에 여러 테이블을 쉼표(,)로 구분하여 나열하는 것만으로 두 테이블을 한 번의 SELECT 쿼리로 조회할 수 있습니다. 다음은 기본 문법입니다.

select * from yourTableName1,yourTableName2;

예제로 살펴보기

1. 첫 번째 테이블 생성

먼저 DemoTable1이라는 이름의 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );
Query OK, 0 rows affected (0.54 sec)

INSERT 명령어를 사용해 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable1 values(),(),();
Query OK, 3 rows affected (0.14 sec)
Records: 3  Duplicates: 0  Warnings: 0

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1;

실행 결과는 다음과 같습니다.

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

2. 두 번째 테이블 생성

이번에는 FirstName 컬럼을 가진 두 번째 테이블을 생성합니다.

mysql> create table DemoTable2
    -> (
    -> FirstName varchar(10)
    -> );
Query OK, 0 rows affected (0.58 sec)

마찬가지로 INSERT 명령어를 사용해 데이터를 삽입합니다.

mysql> insert into DemoTable2 values('Chris'),('David'),('Sam');
Query OK, 3 rows affected (0.10 sec)
Records: 3  Duplicates: 0  Warnings: 0

SELECT 문으로 저장된 데이터를 확인해 보겠습니다.

mysql> select * from DemoTable2;

실행 결과는 다음과 같습니다.

+-----------+
| FirstName |
+-----------+
| Chris     |
| David     |
| Sam       |
+-----------+
3 rows in set (0.00 sec)

두 테이블을 한 번에 조회하기

이제 두 테이블에 대해 SELECT 쿼리를 수행해 보겠습니다. FROM 절에 두 테이블을 쉼표로 구분하여 나열하고, 필요한 컬럼을 지정하면 됩니다.

mysql> select Id,FirstName from DemoTable1,DemoTable2;

실행 결과는 다음과 같습니다.

+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | Chris     |
|  2 | Chris     |
|  3 | Chris     |
|  1 | David     |
|  2 | David     |
|  3 | David     |
|  1 | Sam       |
|  2 | Sam       |
|  3 | Sam       |
+----+-----------+
9 rows in set (0.00 sec)

주의할 점: 카테시안 곱(Cartesian Product)

위 결과를 보면 첫 번째 테이블의 각 행이 두 번째 테이블의 모든 행과 조합되어 총 9개(3×3)의 행이 반환된 것을 확인할 수 있습니다. 이는 조인 조건 없이 여러 테이블을 함께 조회할 때 발생하는 카테시안 곱(Cross Join) 현상입니다. 따라서 실무에서는 WHERE 절이나 JOIN 구문을 사용해 두 테이블을 연결하는 조건을 명시적으로 지정하는 것이 좋습니다.