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

Python에서 MySQL로 두 테이블 LEFT JOIN(왼쪽 조인) 수행하는 방법

SQL에서는 두 테이블 사이의 공통 컬럼 또는 특정 조건을 기준으로 테이블을 조인(JOIN)할 수 있습니다. SQL은 두 테이블을 결합하기 위해 다양한 종류의 JOIN을 제공하며, 그중 이 글에서는 LEFT JOIN(왼쪽 조인)에 대해 자세히 알아보겠습니다.

LEFT JOIN을 사용하면 첫 번째 테이블(왼쪽 테이블)의 모든 레코드가 항상 결과에 포함됩니다. 오른쪽 테이블에서는 조건에 일치하는 레코드가 왼쪽 테이블의 레코드와 연결되며, 만약 왼쪽 테이블의 어떤 행에 일치하는 레코드가 없다면 해당 레코드에는 None(NULL)이 대신 연결됩니다.

즉, 테이블은 특정 조건을 기준으로 조인되지만, 조건의 충족 여부와 관계없이 왼쪽 테이블의 모든 레코드는 반드시 결과에 포함된다는 점이 LEFT JOIN의 핵심 특징입니다.

LEFT JOIN 기본 문법

SELECT column1, column2...
FROM table_1
LEFT JOIN table_2 ON condition;

예제 테이블 소개

설명을 돕기 위해 다음과 같은 "Students"(학생) 테이블과 "Department"(학과) 테이블이 있다고 가정해 보겠습니다.

Students 테이블

+----------+--------------+-----------+
| id | Student_name | Dept_id |
+----------+--------------+-----------+
| 1 | Rahul | 120 |
| 2 | Rohit | 121 |
| 3 | Kirat | 125 |
| 4 | Inder | 123 |
+----------+--------------+-----------+

Department 테이블

+----------+-----------------+
| Dept_id | Department_name |
+----------+-----------------+
| 120 | CSE |
| 121 | Mathematics |
| 122 | Physics |
+----------+-----------------+

두 테이블 모두에 존재하는 공통 컬럼인 dept_id를 기준으로 LEFT JOIN을 수행해 보겠습니다.

Python에서 MySQL로 LEFT JOIN 수행하는 단계

  • MySQL 커넥터(mysql.connector) 모듈을 임포트합니다.
  • connect() 메서드를 사용해 데이터베이스와 연결을 설정합니다.
  • cursor() 메서드로 커서 객체를 생성합니다.
  • 적절한 MySQL 문법으로 조인 쿼리를 작성합니다.
  • execute() 메서드로 SQL 쿼리를 실행합니다.
  • 모든 작업이 끝나면 연결을 종료(close)합니다.

예제 코드

import mysql.connector
db = mysql.connector.connect(host="your host", user="your username",
password="your password",
database="database_name")

cursor = db.cursor()
query = """SELECT Students.Id, Students.Student_name,
Department.Department_name
FROM Students
LEFT JOIN Department
ON Students.Dept_Id = Department.Dept_Id"""
cursor.execute(query)
rows = cursor.fetchall()
for x in rows:
print(x)

db.close()

실행 결과

(1, 'Rahul', 'CSE')
(2, 'Rohit', 'Mathematics')
(3, 'Kirat', None)
(4, 'Inder', None)

출력 결과를 살펴보면, 마지막 두 행(Kirat, Inder)은 Department 테이블에 일치하는 학과 정보가 없음에도 불구하고 결과에 그대로 포함되어 있으며, 해당 자리에는 None이 표시됩니다. 이처럼 왼쪽 테이블의 모든 레코드가 조건 충족 여부와 무관하게 유지되는 것이 바로 LEFT JOIN의 동작 방식입니다.