아무튼 개발
article thumbnail
반응형

EQUI JOIN
SELECT A.USERID,USERNAME,ADDR1,COMPANY,DEPT,POSIT,PAY
FROM CUSTOM A,COMPANY B  
WHERE A.USERID=B.USERID;

A와 B는 테이블의 별칭을 만들어준 것.

이에 따라 SELECT 뒤의 USERID는 A,B테이블에 각각 있으니(어차피 값 같으므로) 한쪽에 임의로 주었다.

WHERE는 조건

 

INNER JOIN
SELECT A.USERID,USERNAME,ADDR1,COMPANY,DEPT,POSIT,PAY
FROM CUSTOM A INNER JOIN COMPANY B 
ON A.USERID=B.USERID;

FROM 뒤에서 ',' 표시인 EQUI JOIN과 달리 'INNER JOIN'을 입력한다. 'INNER'는 생략가능하다.

위의 Where 대신 JOIN의 조건문은 'ON'이다.

 

OUTER JOIN (외부조인)

특정 테이블이 기준이 되어 데이터를 찾아온다.

SELECT A.USERID,USERNAME,ADDR1,COMPANY,DEPT
FROM CUSTOM A, COMPANY B
WHERE A.USERID=B.USERID(+);

(+)기호는 기준이 되는 테이블의 반대쪽에 달아준다.

즉, 여기서는 B옆에 있으니 A테이블이 기준이 되는 것이다.

 

또 다른 방법이다.

, -> OUTER JOIN

WHERE -> ON 

SELECT A.USERID,USERNAME,ADDR1,COMPANY,DEPT
FROM CUSTOM A LEFT OUTER JOIN COMPANY B
ON A.USERID=B.USERID;

A 테이블이 기준이므로 'LEFT'를 붙여준다.

만약 B가 기준이라면 RIGHT

 

A테이블과 B테이블의 데이터 갯수가 다르므로

A테이블의 갯수만큼 데이터가 나온다.

 

CROSS JOIN (상호조인)
SELECT COUNT(*) FROM CUSTOM;
SELECT COUNT(*) FROM COMPANY;

SELECT A.USERID,USERNAME,COMPANY,DEPT
FROM CUSTOM A, COMPANY B;

CUSTOM과 COMPANY 2개의 테이블 값들을 각각 서로 곱한다.

각 컬럼 값들이 모두 곱해지므로 

데이터 양도 더욱 방대해진다.

 

SELF JOIN

동명이인을 걸러내는 코딩이다.

SELECT DISTINCT A.* 
FROM CUSTOM A,CUSTOM B 
WHERE A.USERNAME=B.USERNAME  
AND A.USERID<>B.USERID
ORDER BY A.USERNAME;

SELF JOIN은 자신의 테이블을 나누어 확인한다.

DISTINCT는 중복을 제거하는 기능이 있으믈 이를 활용해 동명이인을 찾아낼 수 있다.

WHERE 조건을 통해 이름이 같지만

AND를 통해 아이디 조건을 줌으로써 이름은 같지만 아이디는 다른 사람,

즉 단순히 이름만 같은 동명이인을 찾아낸다.

 

 

 

 

 

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...