본문 바로가기

wif LiNoUz/Oracle,Sql

이게 2번인듯

Equi Join = 이꼬르  공통적으로 존재하는 컬럼의값이 일치되는 행을 연결하여 결과 생선



SELECT * FROM EMP, DEPT

WHERE EMP.DEPT = DEPT.DEPTNO;


EMP의 DEPTNO컬럼, DEPT의 DEPTNO컬럼 겹친곳

DEPTNO 겹친곳 찾아서 표시.









이때 EMP지정 해줄때 서로 같은 이름이 있으면 에러가 나기 마련이니 이름도 지정 


물론 더 좋은 방법도 있음 






NON-EQUI JOIN

특정범위내에서 조사해 다나와



SELECT ENAME, SAL, GRADE

FROM EMP, SALGRADE

WHERE SAL BETWEEN LOSAL AND HISAL;






근데 위에보면 이름만있고 잡이 뭔지 모른다 젠장

그럼 3개의 테이블을 조인해야할땐 우짤까?? 미치겄네 이거

EMP, DEPT, SALGRADE






서브쿼리 


가로안에부터 실행되는건 알쥐

(EMP중에 DEPTNO출력 ' SCOTT'찾아낸다)

DNAME출력한다 DEPT테이블에서 위에서 찾은 DEPTNO를 기준으로




스캇과 같은 부서에서 근무하는 사원의 이름과 부서번호 출력


SCOTT과 동일한 직급을 가진 사원을 출력하는 SQL문


SCOTT과 급여와 동일하거나 더 많이 받는 사원명과 급여를 출력하라


DALLAS에서 근무하는 사원의 이름, 부서번호를 출력해라



SALES(영업부)부서에서 근무하는 모든 사원의 이름과 급여를 출력해보십시오.


자신의 직속상관이 KING인 사원의 이름과 급여를 출력해보십시오.






사원들의 평균급여 내기

SELECT AVG(SAL) FROM EMP;

평균보다 많은 좌 



다중행 연산자 중요하다

IN

ANY, SOME

ALL

EXIST


 IN

 서브쿼리 결과가 하나라도 일치하면 참 

 ANY, SOME  하나이상 일치하면 참
 ALL  모든값이 일치하면 참
 EXIST  만족값이 하나라도 존재하면 참


SELECT DISTINCT DEPTNO // DISTINCT 중복값 제거

FROM EMP

WHERE SAL>=3000;


밑에처럼 응용하면 에러난다

SQL> SELECT ENAME, SAL, DEPTNO

  2  FROM EMP

  3  WHERE DEPTNO = 

  4  (SELECT DISTINCT DEPTNO FROM EMP WHERE SAL>=3000);


단일연산만된당께 

SELECT ENAME, SAL DEPTNO FROM EMP

WHERE DEPTNO IN ( SELECT DISTINCT DEPTNO FROM EMP WHERE SAL>=3000);

 

부서별로 가장 급여를 많이 받느 사원으 정보 출력 in연산자 사용

 SQL> SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE SAL IN

  2  (SELECT MAX(SAL) FROM EMP);

 이건 이 가장 많이 받는사람이고,.......... 부서별로 다시 해 


직급(job)이 manager인 사람이 속한 부서의 부서번호와 부서명과 지역 출력


HAVING 은 같은 where절인데 GROUP BY ... 에서만 쓰임


ALL 연산자  


30번소속사원중 급여를 가장많이 받는 사원보다 더 많이 받는 사람들의 이름과 급여 

30번sal은 원래 2850이다.

헌데 여기서 결과값이 여러개 나오는 쿼리문을 서브쿼리에 >연산자만 사용하면 오류생긴다

SELECT ENAME, SAL FROM EMP WHERE SAL >

( SELECT SAL FROM EMP WHERE DEPTNO=30);  // 에러난다

이때 필요한게 > ALL


SELECT ENAME, SAL FROM EMP WHERE SAL > ALL

(SELECT SA LFROM EMP WHERE DEPTNO=30);


영업사원들보다 급여를 많이 받는 사원들의 이름과 급여 직급(담당 업무)를  출력하되 영업사원 출력X













'wif LiNoUz > Oracle,Sql' 카테고리의 다른 글

sql  (0) 2012.10.18
DW ERD  (0) 2012.10.16
2  (0) 2012.08.15
Oracle SQL문  (0) 2012.08.10
Oracle 설치  (0) 2012.08.09