SQL in 10min - 13장 고급 테이블 생성하기
inner join- on
where a.ccc = b.ccc
두 방식을 이용한 join이 있음 .
다른 조인에 어떤 것이 있는지 알아본다.
SELF JOIN / NATURAL JOIN / OUTER JOIN 새로운 종류의 JOIN 쓰기 .
** ORACLE 에서는 별칭줄때 AS 안씀. 참고사항.
상황1.
JIM 과 같은 회사애서 일하는 모든 직원에게 메일 보내려 한다.
( 로직 : JIM의 회사코드 파악 >> 회사코드 일치하는 직원 "들" SELECT )
정답 1 ) 서브쿼리 활용하기
SELECT CUSTID, CUSTNAME,CUSTCONTACT FROM CUSTOMERS
WHERE CUSTNAME = (
SELECT CUSTNAME FROM CUSTOMERS WHERE CUSTCONTACT= 'JIM'
) ;
정답2)
SELECT C1.CUSTID , C1.CUSTNAME, C1.CUSTCONTACT
FROM CUSTOMERS C1 , CUSTOMERS C2
WHERE C1.CUSTNAME= C2.CUSTNAME
AND
C2.CUSTCONTACT= 'JIM' ;
// 괄호를 사용 안함 . FROM 절 전후에서 C1.어쩌구 C2.어쩌구 가 사용 가능!!!!!!
궁금증)))
해당쿼리에서는 실제로 같은 테이블인데 왜 두번을 써주었을까?
DBMS 가 같은 테이블을 찾아갈때 헷갈리지 말라고 별칭을 준다.
같은 객체이지만
C1 이라는 이름으로 그 테이블주소언급하고 C2라는 이름으로 그 테이블 주소 언급하고 ..
그래야만 한다
그이유는
<<
별칭 미지정시 CUSTID, CUSTNAME 등 열이 두개씩 존재하기 때문에 에러가 발생할 것이기 때문이다.
CUSTCONTACT로 데이터를 필터링 해주어야 할 것이다.
>>
Q 궁금증
쿼리문에서 별칭 alias 는 그 메모리 주소를 알려주는 건가요 아니면
c1 c2 에 ㄹㅇ 테이블 한통한통씩 넣어준다는 의미인가요?