728x90
반응형

1. OUTER JOIN

CREATE TABLE 고객 (고객번호 NUMBER PRIMARY KEY  , 고객명 VARCHAR2(9));
CREATE TABLE 주문 (주문번호 NUMBER PRIMARY KEY  , 고객번호 VARCHAR2(9) , 주문금액 VARCHAR2(9));

==>   VARCHAR2(9) ==> 한글 하나당 3 byte

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;

OUTER JOIN

주문 테이블을 고객 테이블(+) 가 없는 을 기준으로 JOIN 시킨다.

 

SELECT *
FROM 고객 A, 주문 B
WHERE B.고객번호 = A.고객번호(+);

OUTER JOIN

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');

 

T1 테이블
T2 테이

SELECT *
FROM T1 A , T2 B
WHERE A.C1 >=2 AND B.C2 IN('A' , 'C')

카티션 곱

==> 조인 조건이 누락되면 카티션 곱 집합이 생성된다.

 

3. 표준조인(INNER JOIN)

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);

T1
T2

SELECT * FROM T1 A INNER JOIN T2 B
ON B.C1 = A.C1 WHERE A.C1 >=2;

==> INNER JOIN은 ON 절에 조건 기술

 

==> 공통적인거 써놓는다.

728x90
반응형

+ Recent posts