NATURAL JOIN은 VSCode 에서는 오류가 발생한다.
따라서 sqldeveloper를 사용해서 실습하겠다.
SELECT bCode, bName, bPrice, pNum, pName, sDate, cNum, cName, qty, bPrice * qty amt
FROM book
NATURAL JOIN pub
NATURAL JOIN dsale
NATURAL JOIN sale
NATURAL JOIN cus;
NATURAL 조인은 두 테이블의 동일한 이름을 가진 컬럼을 모두 조인한다. 동일한 이름으로 컬럼을 찾는다. 별명사용이 불가능하다. 컬럼의 이름이 다르면 조인이 되지 않는다.
CROSS JOIN 은 서로 테이블에 있는 행들을 다 JOIN한다.
SELECT * FROM pub;
SELECT * FROM book;
SELECT p.pNum, pName, bCode, bName
FROM pub p
CROSS JOIN book b;
10 * 27 = 270 행이 인출됨을 알 수 있다. 실무에서는 많이 사용되진 않는 것 같다.
SELF JOIN 은 자기가 자기를 조인한다.
이 조인의 활용 첫 번째는 자기자신을 참조키로 갖는 테이블에 사용해 분류할 때 사용한다.
SELECT * FROM bclass;
m001~m005 까지는 큰 범위의 분류를 주고
m001에 해당하는 것은 p001~p005 ... 로 주었다. 이것을 SELF JOIN 해보자.
SELECT b1.bcCode, b1.bcSubject, b2.bcCode, b2.bcSubject
FROM bclass b1
JOIN bclass b2 ON b1.bcCode = b2.pcCode;
큰 분류 안에 속하는 것들로 분류된 것을 볼 수 있다.
SELF JOIN의 활용 두번째. author 테이블을 SELF JOIN해서 저자가 두명인 책들을 뽑아보자.
SELECT * FROM author;
-- Author 테이블
SELECT a1.bCode, a1.aName, a2.aName
FROM author a1
JOIN author a2 ON a1.bCode = a2.bCode AND a1.aName < a2.aName
ORDER BY a1.bCode;
SELF 조인하면 저자가 2개 이상인 것은 여러행이 출력되기 때문에
뒤에 AND a1.aName < a2.aName 을 해주면 한글의 UNICODE값을 비교해서 해당하는 값만 출력하기 때문에, 가나다라 순으로 뽑아준다.
저자가 3개 인 책은 9개의 행이 출력되어서 3개의 행이 나오긴 한다.
'쌍용강북교육센터 > 8월' 카테고리의 다른 글
0813_Oracle : RIGHT OUTER JOIN, LEFT OUTER JOIN (2) 예제를 통한 실습 (0) | 2021.08.16 |
---|---|
0812_Oracle : RIGHT OUTER JOIN, LEFT OUTER JOIN, FULL OUTER JOIN (2) | 2021.08.16 |
0812_Oracle : EQUI JOIN (2) (1) | 2021.08.15 |
0812_Oracle : EQUI JOIN (1) (0) | 2021.08.13 |
0812_Oracle : JOIN을 활용한 문제풀이 [210813 수정] (2) | 2021.08.12 |