Python

[mysql] Python - MySQL Join (테이블 결합)

2270

목차

  1. 2개 테이블 존재 가정
  2. JOIN (= INNER JOIN) - 공통 레코드 기준 결합
  3. LEFT JOIN - 왼쪽 기준으로 결합
  4. RIGHT JOIN - 오른쪽 기준으로 결합

 

2개 테이블 존재 가정

[hz_member 테이블] ※ 컬럼: (mb_id, mb_name, mb_level)

 

import mysql.connector


mydb = mysql.connector.connect(

  host="localhost",

  user="root",

  password="autoset",

  database="hz"

)


mycursor = mydb.cursor()

sql = "INSERT INTO hz_member (mb_id, mb_name, mb_level)  VALUES (%s, %s, %s)"

val = [

    (1, 'AAA', '1'),

    (2, 'BBB', '2'),

    (3, 'CCC', '3'),

    (4, 'DDD', '4'),

    (5, 'EEE', '5')

]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "recode inserted.")

 


[hz_point 테이블] ※ 컬럼: (mb_id, mb_point)

 

import mysql.connector


mydb = mysql.connector.connect(

  host="localhost",

  user="root",

  password="autoset",

  database="hz"

)


mycursor = mydb.cursor()

sql = "INSERT INTO hz_point (mb_id, mb_point)  VALUES (%s, %s)"

val = [

    (1, 100),

    (2, 200),

    (6, 600)

]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "recode inserted.")

 

 

JOIN (= INNER JOIN) - 공통 레코드 기준 결합

 

import mysql.connector


mydb = mysql.connector.connect(

  host="localhost",

  user="root",

  password="autoset",

  database="hz"

)


mycursor = mydb.cursor()

sql = "SELECT \

  hz_member.mb_name AS user, \

  hz_point.mb_point AS point \

  FROM hz_member \

  JOIN hz_point ON hz_member.mb_id = hz_point.mb_id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:

  print(x)

 

결과값:

('AAA', 100)

('BBB', 200) 

※ JOIN 대신 INNER JOIN 사용 가능. (동일)

 

LEFT JOIN - 왼쪽 기준으로 결합

 

import mysql.connector


mydb = mysql.connector.connect(

  host="localhost",

  user="root",

  password="autoset",

  database="hz"

)


mycursor = mydb.cursor()

sql = "SELECT \

  hz_member.mb_name AS user, \

  hz_point.mb_point AS point \

  FROM hz_member \

  LEFT JOIN hz_point ON hz_member.mb_id = hz_point.mb_id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:

  print(x)

 

결과값: 

('AAA', 100)

('BBB', 200)

('CCC', None)

('DDD', None)

('EEE', None) 

 

RIGHT JOIN - 오른쪽 기준으로 결합

 

import mysql.connector


mydb = mysql.connector.connect(

  host="localhost",

  user="root",

  password="autoset",

  database="hz"

)


mycursor = mydb.cursor()

sql = "SELECT \

  hz_member.mb_name AS user, \

  hz_point.mb_point AS point \

  FROM hz_member \

  RIGHT JOIN hz_point ON hz_member.mb_id = hz_point.mb_id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:

  print(x)


결과값:

('AAA', 100)

('BBB', 200)

(None, 600) 



분류 제목
basic Python - Home (입문) - 이념 / 추천 링크
basic Python - Intro (소개) - 용도・특징
basic Python - Start (시작) - 파이썬 설치/실행/버전확인
basic Python - Syntax (구문) - 들여쓰기・변수・주석
basic Python - Comment (주석)
basic Python - Variable (변수)
basic Python - DataType (데이터타입) - 자료형
basic Python - Number (숫자)
basic Python - Casting (데이터 타입 변경) - 자료형 변환
basic Python - String (문자열) ★ ※ 색인번호 (= 인덱스) 개념.
basic Python - Boolean (참거짓)
basic Python - Operator (연산자)
basic Python - List (리스트) ★ - 변경 가능한 모음
basic Python - Tuple (투플/튜플) - 변경 불가 모음
basic Python - Set (셋/세트) - '순서(=색인)' 없고, 중복 허용 않는 데이터 모음.
1/32
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인