[Reference] 초보자를 위한 SQL 200제


[SQL 문법]

EQUI JOIN으로 조인이 안되는 데이터를 출력할 수 있다.
left/right/full outer join을 사용한다

SELECT e.ename as 이름, e.job as 직업, e.sal as 월급, d.loc as 부서위치
  FROM emp e RIGHT OUTER JOIN dept d
  ON (e.deptno = d.deptno)

[예시]

# 오라클 연동 및 접속
import pandas as pd
import cx_Oracle
dsn=cx_Oracle.makedsn('localhost',1521,'orcl')
db=cx_Oracle.connect('scott','tiger')
cursor=db.cursor()

# SQL 문법
cursor.execute("""
SELECT e.ename as 이름, e.job as 직업, e.sal as 월급, d.loc as 부서위치
  FROM emp e RIGHT OUTER JOIN dept d
  ON (e.deptno = d.deptno)
"""
)

row=cursor.fetchall()
colname=cursor.description
col=[]

for i in colname:
    col.append(i[0])

# pandas를 사용한 데이터 프레임 형식으로 변환
emp=pd.DataFrame(row,columns=col)
print(emp)
        이름         직업      월급      부서위치
0     KING  PRESIDENT  5000.0  NEW YORK
1    BLAKE    MANAGER  2850.0   CHICAGO
2    CLARK    MANAGER  2450.0  NEW YORK
3    JONES    MANAGER  2975.0    DALLAS
4   MARTIN   SALESMAN  1250.0   CHICAGO
5    ALLEN   SALESMAN  1600.0   CHICAGO
6   TURNER   SALESMAN  1500.0   CHICAGO
7    JAMES      CLERK   950.0   CHICAGO
8     WARD   SALESMAN  1250.0   CHICAGO
9     FORD    ANALYST  3000.0    DALLAS
10   SMITH      CLERK   800.0    DALLAS
11   SCOTT    ANALYST  3000.0    DALLAS
12   ADAMS      CLERK  1100.0    DALLAS
13  MILLER      CLERK  1300.0  NEW YORK
14    None       None     NaN    BOSTON

[복습] 2023-02-07

1999 ANSI/ISO 조인 SQL 작성법은 다음과 같다.

SELECT e.ename, d.loc
  FROM emp e RIGHT OUTER JOIN dept d
  ON (e.deptno = d.deptno)

[결과]

     ENAME       LOC
0     KING  NEW YORK
1    BLAKE   CHICAGO
2    CLARK  NEW YORK
3    JONES    DALLAS
4   MARTIN   CHICAGO
5    ALLEN   CHICAGO
6   TURNER   CHICAGO
7    JAMES   CHICAGO
8     WARD   CHICAGO
9     FORD    DALLAS
10   SMITH    DALLAS
11   ADAMS    DALLAS
12  MILLER  NEW YORK
13    None    BOSTON

Leave a comment