#1.JOIN 두개이상의 테이블을 결합
-INNER JOIN :공통영역만
-FULL OUTER JOIN: 양쪽 TABLE의 NULL값까지 (공통영역포함)
-LEFT JOIN: 왼쪽테이블의 NULL값포함 (공통영역포함)
-RIGNT JOIN: 오른쪽 테이블의 NULL값포함 (공통영역포함)

#2. INNER JOIN (ORACLE과 문법이 다르니 확인)
SELECT 1,2 ...
FROM TABLE A
INNER JOIN TABLE B
ON TABLEA.COLUMN = TABLEB.COLUMN
WHERE CONDIRIOTN

#3. LEFT JOIN (ORACLE과 문법이 다르니 확인)
SELECT 1,2 ...
FROM TABLE A (<-이게 LEFT)
LEFT JOIN TABLE B (<-이게 RIGHT)
ON TABLEA.COLUMN = TABLEB.COLUMN
WHERE CONDIRIOTN

#4. RIGHT JOIN (ORACLE과 문법이 다르니 확인)
SELECT 1,2 ...
FROM TABLE A (<-이게 LEFT)
RIGHT JOIN TABLE B (<-이게 RIGHT)
ON TABLEA.COLUMN = TABLEB.COLUMN
WHERE CONDIRIOTN

#5. FULL OUTER JOIN (ORACLE과 문법이 다르니 확인)
SELECT 1,2 ...
FROM TABLE A (<-이게 LEFT)
FULL OUTER JOIN TABLE B (<-이게 RIGHT)
ON TABLEA.COLUMN = TABLEB.COLUMN
WHERE CONDIRIOTN


※MY SQL에서는 FULL OUTER JOIN을 지원하지 않아 오류발생
#5-1. 대체 방법
SELECT 1,2 ...
FROM TABLE A (<-이게 LEFT)
LEFT JOIN TABLE B (<-이게 RIGHT)
ON TABLEA.COLUMN = TABLEB.COLUMN
UNION
SELECT 1,2 ...
FROM TABLE A (<-이게 LEFT)
RIGHT JOIN TABLE B (<-이게 RIGHT)
ON TABLEA.COLUMN = TABLEB.COLUMN
WHERE CONDIRIOTN

#6.SELF JOIN (INNER JOIN 과 같은 출력)
SELECT 1,2 ...
FROM TABLE A , TABLE B
WHERE CONDITION;

※RIGHT JOIN , LEFT JOIN 이 ORACLE의 방식으로는 오류

#7.예제활용 (컬럼 명이 다르다면 테이블 명 기재안해도 오류안남)

mysql> SELECT A.NAME, A.AGE, A.JOB_TITLE, A.AGENCY, B.SEASON, B.EPISODE
    -> FROM CELEB A, SNL_SHOW B
    -> WHERE A.NAME= B.HOST
    -> AND ((JOB_TITLE NOT LIKE '%영화배우%' AND AGENCY LIKE 'YG%')
    -> OR (AGE >=40 AND AGENCY NOT LIKE 'YG%'));
+--------+------+-----------+--------------------+--------+---------+
| NAME   | AGE  | JOB_TITLE | AGENCY             | SEASON | EPISODE |
+--------+------+-----------+--------------------+--------+---------+
| 유재석 |   50 | mc,개그맨 | 안테나엔터테이먼트 |      8 |       8 |
| 이수현 |   23 | 가수      | yg엔터테이먼트     |      8 |      10 |
+--------+------+-----------+--------------------+--------+---------+
2 rows in set (0.00 sec)

#8. 헷갈린 문제풀이 (질문해석)
snl_show 에 출연한 celeb 중, 작년 9월 15일 이후에 출연했거나
소속사 이름이 ‘엔터테이먼트’ 로 끝나지 않으면서 영화배우나 개그맨이 아닌 연예인의
celeb 아이디, 이름, 직업, 소속사를 검색하세요

8-1. 출연 OR (소속사 AND (영화배우나 개그맨이 아닌 )

mysql> SELECT A.ID , NAME, JOB_TITLE, AGENCY
    -> FROM CELEB A, SNL_SHOW B
    -> WHERE A.NAME=B.HOST
    -> AND (B.BROADCAST_DATE >'20200915'
    -> OR (A.AGENCY NOT LIKE '%엔터테이먼트' AND (A.JOB_TITLE NOT LIKE '%영화배우%'
    -> AND A.JOB_TITLE NOT LIKE '%개그맨%')));
+----+--------+---------------+----------------+
| ID | NAME   | JOB_TITLE     | AGENCY         |
+----+--------+---------------+----------------+
|  6 | 차승원 | 영화배우,모델 | yg엔터테이먼트 |
|  7 | 이수현 | 가수          | yg엔터테이먼트 |
+----+--------+---------------+----------------+

8-2 강의VER (출연 OR 소속사) AND (영화배우나 개그맨이 아닌)

mysql> SELECT A.ID , NAME, JOB_TITLE, AGENCY
    -> FROM CELEB A, SNL_SHOW B
    -> WHERE A.NAME=B.HOST
    -> AND (B.BROADCAST_DATE >'20200915' OR A.AGENCY NOT LIKE '%엔터테이먼트')
    -> AND (A.JOB_TITLE NOT LIKE '%영화배우%' AND A.JOB_TITLE NOT LIKE '%개그맨%');
+----+--------+-----------+----------------+
| ID | NAME   | JOB_TITLE | AGENCY         |
+----+--------+-----------+----------------+
|  7 | 이수현 | 가수      | yg엔터테이먼트 |
+----+--------+-----------+----------------+
profile
김지율

0개의 댓글

관련 채용 정보