SQL에서는 두 테이블 사이의 공통 컬럼을 기준으로 하거나 특정 조건에 따라 두 테이블을 조인(JOIN)할 수 있습니다. SQL은 테이블을 결합하기 위해 다양한 종류의 JOIN을 제공합니다.
이 글에서는 두 테이블에 대한 RIGHT JOIN(오른쪽 조인)에 대해 자세히 알아보겠습니다. RIGHT JOIN에서는 두 번째 테이블(오른쪽 테이블)의 모든 레코드가 항상 결과에 포함됩니다. 왼쪽 테이블에서 일치하는 레코드가 오른쪽 테이블의 레코드와 연결되며, 오른쪽 테이블의 특정 행에 일치하는 레코드가 없으면 None(NULL)이 해당 레코드와 함께 반환됩니다.
테이블은 특정 조건을 기준으로 조인되지만, 조건과 무관하게 오른쪽 테이블의 모든 레코드는 반드시 결과에 포함된다는 점이 RIGHT JOIN의 핵심입니다.
기본 문법
SELECT column1, column2... FROM table_1 RIGHT JOIN table_2 ON condition;
예시 테이블
"Students"(학생)와 "Department"(학과)라는 두 개의 테이블이 있다고 가정해 보겠습니다.
Students 테이블
+----------+--------------+-----------+ | id | Student_name | Dept_id | +----------+--------------+-----------+ | 1 | Rahul | 120 | | 2 | Rohit | 121 | | 3 | Kirat | 121 | | 4 | Inder | 123 | +----------+--------------+-----------+
Department 테이블
+----------+-----------------+ | Dept_id | Department_name | +----------+-----------------+ | 120 | CSE | | 121 | Mathematics | | 122 | Physics | +----------+-----------------+
두 테이블 모두에 존재하는 공통 컬럼인 dept_id를 기준으로 RIGHT JOIN을 수행해 보겠습니다.
Python에서 MySQL로 RIGHT JOIN을 수행하는 단계
MySQL 커넥터(mysql.connector)를 임포트합니다.
connect() 메서드를 사용하여 데이터베이스와 연결을 설정합니다.
cursor() 메서드로 커서 객체를 생성합니다.
적절한 MySQL 문법으로 쿼리를 작성합니다.
execute() 메서드를 사용하여 SQL 쿼리를 실행합니다.
작업이 끝나면 연결을 종료합니다.
예제 코드
import mysql.connector
db=mysql.connector.connect(host="your host", user="your username", password="yourpassword",database="database_name")
cursor=db.cursor()
query="SELECT Students.Id,Students.Student_name,Department.Department_name FROM Students RIGHT 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', 'Mathematics') (None, 'Physics')
실행 결과를 살펴보면 마지막 행(Physics 학과)에는 일치하는 학생 레코드가 없음에도 불구하고, 오른쪽 테이블(Department)의 모든 레코드가 결과에 포함된 것을 확인할 수 있습니다. Physics 학과에는 소속된 학생이 없으므로 학생 정보가 None으로 표시됩니다. 이것이 바로 RIGHT JOIN의 동작 방식입니다.