728x90
개인적으로 서브쿼리가 직관적이고 이해하긴 쉬운거 같은데 성능의 문제로 조인쿼리를 사용을 권장한다고 한다. 사용하게된 김에 다시 공부해보자.
이론
INNERJOIN : 양 테이블 서로 겹치는 값만 검색한다. (교집합)
--문법--
SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키....
--예제--
SELECT
A.NAME, --A테이블의 NAME조회
B.AGE --B테이블의 AGE조회
FROM EX_TABLE A
INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
LEFT(RIGHT) OUTER JOIN : 왼쪽 테이블은 전부다 보여주고 오른쪽은 겹치는 것만 검색한다.
--문법--
SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키 .....
--예제--
SELECT
A.NAME, --A테이블의 NAME조회
B.AGE --B테이블의 AGE조회
FROM EX_TABLE A
LEFT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
FULL OUTER JOIN : 양 테이블 전부 다 보여준다.
--문법--
SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
FULL OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키 .....
--예제--
SELECT
A.NAME, --A테이블의 NAME조회
B.AGE --B테이블의 AGE조회
FROM EX_TABLE A
FULL OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
SELF JOIN : 자기 자신을 조인한다. (자신의 데이터를 참조하여 사용할 경우 활용)
--문법--
SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 테이블 별칭,테이블 별칭2
--예제--
SELECT
A.NAME, --A테이블의 NAME조회
B.AGE --B테이블의 AGE조회
FROM EX_TABLE A,EX_TABLE B
출처: https://coding-factory.tistory.com/87
예제
plan테이블을 부모로 하는 schedule테이블이 있다.
여기서 특정 plan을 조회할 시 plan에 대한 정보와 planNo가 일치하는 schedule의 목록을 출력하고자 한다.
다시말하면 특정 planNo에 대한 plan과 schedule의 모든 데이터를 보고싶다.
이 때 기준 테이블과 필드가 plan과 plan.planNo가 되고 참조하는 테이블이 schedule이 되므로
plan을 기준으로한 JOIN을 사용하면 원하는 목록을 출력받을 수 있을 것 같다.
SELECT * FROM plan WHERE planNo = 9;
위는 9번계획이며 위 행을 참조하는 schedule을 뽑고싶다.
SELECT * FROM schedule WHERE planNo = 9;
계획 9번에 대한 schedule 데이터이다.
SELECT *
FROM plan JOIN schedule
ON plan.planNo = schedule.planNo AND plan.planNo=9;
JOIN문을 통해 원하는 데이터를 출력했다.
이 쿼리문을 이용하여 개인 일정 열람 게시판을 만들 수 있을 것이다.
'IT개념 > 데이터베이스' 카테고리의 다른 글
DB필드 명 조회 쿼리 (필드 네이밍 시 참고) (0) | 2022.10.06 |
---|---|
[데이터베이스] 2-1. 데이터베이스 관리 시스템의 정의와 발전 과정 이해 (0) | 2022.03.14 |
[DataBase] 1-2. 데이터베이스 시스템(DBMS) (0) | 2022.03.06 |
[DataBase] 1-1. 데이터베이스의 필요성 및 정의와 특성 이해 (0) | 2022.03.06 |
[MYSQL] 정렬된 행 중간에 새로운 행 삽입과 삭제하기 (0) | 2021.05.13 |