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

MySQL에서 두 테이블의 ID로 사용자 이름 조회하기 – JOIN 쿼리 완벽 가이드

MySQL에서 두 개의 테이블에 걸쳐 ID를 기준으로 사용자 이름(username)을 조회하려면 JOIN을 사용해야 합니다. JOIN은 공통 컬럼(여기서는 ID)을 기준으로 여러 테이블의 데이터를 하나로 연결해 주는 SQL의 핵심 기능입니다.

이해를 돕기 위해 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 첫 번째 테이블 생성

먼저 사용자 정보를 저장할 테이블을 생성합니다.

mysql> create table demo77
    -> (
    -> userid int not null primary key,
    -> username varchar(20)
    -> );
Query OK, 0 rows affected (2.63 sec)

2단계: 첫 번째 테이블에 데이터 삽입

INSERT 명령어를 사용해 사용자 데이터를 추가합니다.

mysql> insert into demo77 values(1,'John');
Query OK, 1 row affected (0.19 sec)

mysql> insert into demo77 values(2,'Bob');
Query OK, 1 row affected (0.36 sec)

SELECT 문으로 저장된 데이터를 확인합니다.

mysql> select *from demo77;

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

출력 결과

+--------+----------+
| userid | username |
+--------+----------+
|      1 | John     |
|      2 | Bob      |
|      3 | Mike     |
+--------+----------+

3단계: 외래 키가 있는 두 번째 테이블 생성

이번에는 국가 정보를 담는 두 번째 테이블을 만듭니다. 이때 id 컬럼에 외래 키(Foreign Key) 제약 조건을 설정하여 첫 번째 테이블의 userid를 참조하도록 구성합니다.

mysql> create table demo78
    -> (
    -> id int not null primary key,
    -> countryname varchar(20),
    -> constraint fk_id foreign key(id) references demo77(userid)
    -> );
Query OK, 0 rows affected (0.75 sec)

4단계: 두 번째 테이블에 데이터 삽입

mysql> insert into demo78 values(1,'US');
Query OK, 1 row affected (0.14 sec)

mysql> insert into demo78 values(2,'AUS');
Query OK, 1 row affected (0.15 sec)

SELECT 문으로 두 번째 테이블의 데이터를 확인합니다.

mysql> select *from demo78;

출력 결과

+----+-------------+
| id | countryname |
+----+-------------+
|  1 | US          |
|  2 | AUS         |
+----+-------------+
2 rows in set (0.00 sec)

5단계: JOIN으로 두 테이블 연결하여 사용자 이름 조회

이제 두 테이블을 JOIN하여 ID를 기준으로 사용자 이름을 가져오는 최종 쿼리입니다. demo77.useriddemo78.id가 일치하는 행만 결합됩니다.

mysql> select username from demo77
    -> join demo78
    -> on demo77.userid=demo78.id;

출력 결과

+----------+
| username |
+----------+
| John     |
| Bob      |
+----------+
2 rows in set (0.05 sec)

핵심 정리

위 예제에서 확인할 수 있듯이, JOIN은 두 테이블 간의 관계를 맺어주는 역할을 합니다. ON 절에 명시한 조건(demo77.userid = demo78.id)에 해당하는 데이터만 결과로 반환되며, 이를 통해 한 테이블의 ID 값만으로 다른 테이블에 저장된 사용자 이름을 손쉽게 조회할 수 있습니다.

참고로 INNER JOIN은 양쪽 테이블 모두에 존재하는 데이터만 반환합니다. 만약 국가 정보가 없는 사용자(Mike처럼 demo78에 데이터가 없는 경우)도 함께 조회하고 싶다면 LEFT JOIN을 사용하면 됩니다.