SQL에서는 두 테이블을 공통 컬럼을 기준으로 하거나, 지정한 특정 조건에 따라 조인(JOIN)할 수 있습니다. SQL 테이블을 결합하는 데 사용되는 JOIN에는 여러 종류가 있으며, 그중 이 글에서는 INNER JOIN(내부 조인)에 대해 자세히 알아보겠습니다.
JOIN과 INNER JOIN은 동일하게 작동합니다. INNER JOIN은 한 테이블의 각 행을 다른 테이블의 모든 행과 비교하여, 공통 컬럼을 가지고 있거나 지정된 조건을 만족하는 행들만 결합해 결과로 반환합니다.
두 테이블을 조인할 때는 반드시 어떤 기준으로 테이블을 연결할지 조건을 명시해야 합니다.
구문
SELECT column1, column2... FROM table_1 INNER JOIN table_2 ON condition;
예시 테이블
설명을 위해 'Students'(학생) 테이블과 'Department'(학과) 테이블이 다음과 같이 있다고 가정하겠습니다.
Students 테이블
+----------+--------------+-----------+ | id | Student_name | Dept_id | +----------+--------------+-----------+ | 1 | Rahul | 120 | | 2 | Rohit | 121 | | 3 | Kirat | 122 | | 4 | Inder | 125 | +----------+--------------+-----------+
Department 테이블
+----------+-----------------+ | Dept_id | Department_name | +----------+-----------------+ | 120 | CSE | | 121 | Mathematics | | 122 | Physics | +----------+-----------------+
두 테이블 모두 존재하는 공통 컬럼인 Dept_id를 기준으로 조인을 수행해 보겠습니다.
Python에서 MySQL로 두 테이블을 조인하는 단계
MySQL 커넥터를 임포트(import)합니다.
connect() 메서드를 사용해 데이터베이스와 연결을 설정합니다.
cursor() 메서드로 커서 객체를 생성합니다.
적절한 MySQL 문법으로 조인 쿼리를 작성합니다.
execute() 메서드로 SQL 쿼리를 실행합니다.
작업이 끝나면 연결을 종료합니다.
예제 코드
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 INNER 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', 'Physics')
결과 분석
위 실행 결과에서 주목할 점은 Students 테이블의 4번째 행(id=4, Inder)이 결과에 포함되지 않았다는 것입니다. 그 이유는 Department 테이블에 Dept_id가 125인 레코드가 존재하지 않아, INNER JOIN 조건을 만족하지 못했기 때문입니다. 즉, INNER JOIN은 양쪽 테이블 모두에 일치하는 데이터만 반환한다는 특징이 있습니다.