1. 외부 조인
CREATE TABLE 고객 (고객번호 NUMBER PRIMARY KEY , 고객명 VARCHAR2(9));
CREATE TABLE 주문 (주문번호 NUMBER PRIMARY KEY , 고객번호 VARCHAR2(9) , 주문금액 VARCHAR2(9));
==> VARCHAR2(9) ==> 한글당 3바이트
INSERT INTO 고객 (고객번호, 고객명) VALUES (1, '김대원');
INSERT INTO 고객 (고객번호, 고객명) VALUES (2, '노영미');
INSERT INTO 고객 (고객번호, 고객명) VALUES (3, '김경진');
INSERT INTO 고객 (고객번호, 고객명) VALUES (4, '박하연');
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2001, 1 , 40000);
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2002, 2 , 15000);
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2003, 2 , 7000);
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2004, 2 , 8000);
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2005, 2 , 20000);
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2006, 3 , 5000);
INSERT INTO 주문 (주문번호, 고객번호, 주문금액) VALUES (2007, 3 , 9000);
SELECT * FROM 고객;
SELECT * FROM 주문;
SELECT *
FROM 고객 A, 주문 B
WHERE B.고객번호(+) = A.고객번호
AND B.주문금액(+) > 10000;
외부 조인
비고객(+) 테이블을 기준으로 주문 테이블을 조인합니다.
SELECT *
FROM 고객 A, 주문 B
WHERE B.고객번호 = A.고객번호(+);
SELECT SUM(B.주문금액) / COUNT (DISTINCT A.고객번호) AS R1
FROM 고객 A, 주문 B
WHERE B.고객번호(+) = A.고객번호
AND B.주문금액(+) > 10000;
2. 데카르트
CREATE TABLE T1 (C1 VARCHAR2(2) , C2 VARCHAR2(2) );
CREATE TABLE T2 (C1 VARCHAR2(2) , C2 VARCHAR2(2) );
INSERT INTO T1 (C1 , C2) VALUES (1, 'A');
INSERT INTO T1 (C1 , C2) VALUES (2, 'B');
INSERT INTO T1 (C1 , C2) VALUES (3, 'C');
INSERT INTO T1 (C1 , C2) VALUES (4, 'D');
INSERT INTO T2 (C1 , C2) VALUES (1, 'A');
INSERT INTO T2 (C1 , C2) VALUES (1, 'B');
INSERT INTO T2 (C1 , C2) VALUES (2, 'A');
INSERT INTO T2 (C1 , C2) VALUES (3, 'B');
INSERT INTO T2 (C1 , C2) VALUES (3, 'C');
SELECT *
FROM T1 A , T2 B
WHERE A.C1 >=2 AND B.C2 IN('A' , 'C')
==> 조인 조건이 없으면 데카르트 곱 집합이 생성됩니다.
3. 내부 연결
CREATE TABLE T1 (C1 VARCHAR2(2) , C2 VARCHAR2(2));
CREATE TABLE T2 (C1 VARCHAR2(2) , C2 VARCHAR2(2));
INSERT INTO T1 (C1, C2) VALUES (1 ,'A');
INSERT INTO T1 (C1, C2) VALUES (2 ,'B');
INSERT INTO T1 (C1, C2) VALUES (3 ,'C');
INSERT INTO T2 (C1, C2) VALUES (1 ,1);
INSERT INTO T2 (C1, C2) VALUES (2 ,1);
INSERT INTO T2 (C1, C2) VALUES (3 ,1);
INSERT INTO T2 (C1, C2) VALUES (3 ,2);
INSERT INTO T2 (C1, C2) VALUES (4 ,1);
SELECT * FROM T1 A INNER JOIN T2 B
ON B.C1 = A.C1 WHERE A.C1 >=2;
==> INNER JOIN은 ON 절의 조건을 설명합니다.
==> 공통점을 쓰세요.