뚜벅이

SQL in 10min - 13장 고급 테이블 생성하기 본문

DATABASE

SQL in 10min - 13장 고급 테이블 생성하기

ZZM 2021. 7. 4. 22:44

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 에 ㄹㅇ 테이블 한통한통씩 넣어준다는 의미인가요?