TIL / DB 1주차(5) / IN & EXISTS / ANY & ALL

병아리코더 아카이브·2023년 9월 2일
0

DB

목록 보기
5/9
post-thumbnail

IN & EXISTS

IN

  • OR 조건과 같은 결과를 가져온다.

  • '=' 비교만 가능하다 ( <> 와 같은 크고작음은 X )


EXISTS

  • 메인쿼리의 비교조건이 서브쿼리의 결과 중 '만족하는 값이 하나라도 존재하면' 참(1) 아니면 거짓(0) 을 반환

  • 메인쿼리 -> 서브쿼리 실행순으로 진행된다.

  • WHERE 조건절로 EXISTS 사용할 경우 WHERE 1 로 실행이 되서 조건에 맞는 모든 결과를 보여준다.
    ( EXISTS 외에도 WHERE 조건절에 1을 쓰면 결과를 보여주고 0 이면 결과를 보여주지 않는다 )


IN 과 EXISTS

  • IN 과 EXISTS 로 동일한 결과를 얻을 때 EXISTS 가 더 많은 쿼리문이 필요하다.

  • IN 이 쓰기는 더 편하지만 EXISTS 가 속도가 더 빠르기 때문에 EXISTS 를 사용하기도 한다.

  • EXISTS 는 메인쿼리로 데이터를 우선 확보한 뒤 서브쿼리를 실행하기 때문에 속도가 더 빠르다. 반면 IN 은 서브쿼리의 내용들을 찾아가며 메인쿼리를 돌리기 때문에 상대적으로 더 느리다.



ANY & ALL

ANY

  • IN 과 비슷하다. 다만 크고작음의 부등호 사용이 가능하다.

= ANY

  • IN 과 같은 효과를 낸다.

> ANY

  • 서브쿼리 내부 선택한 컬럼의 어떤(ANY) 최소값보다 비교할 조건절의 컬럼이 더 크면 큰 값을 가진 데이터의 컬럼들의 데이터를 보여준다.
    ( 여기서는 hiredate 의 최소값보다 큰 hiredate 을 가진 데이터들의 컬럼들의 데이터를 보여주고 있다 )

  • 최소값인 이유는 둘 중 하나만 만족해도 되기 때문이다.

  • 이때 서브쿼리의 min 함수는 사용하지 않아도 된다.

< ANY

  • 서브쿼리 내부 선택한 컬럼의 어떤(ANY) 최대값보다 비교할 조건절의 컬럼이 더 작으면 작은 값을 가진 데이터의 컬럼들의 데이터를 보여준다.
    ( 여기서는 hiredate 의 최대값보다 작은 hiredate 을 가진 데이터들의 컬럼들의 데이터를 보여주고 있다 )

  • 최대값인 이유는 둘 중 하나만 만족해도 되기 때문이다.

  • 이때 서브쿼리의 max 함수는 사용하지 않아도 된다.

가령 10,11,12 조건을 만족해야 하는 경우 최대 12보다 큰 데이터인 13부터 나와야 남은 10,11 의 조건들도 자연스럽게 만족한다.


ALL

  • ANY 가 or 조건이면 ALL 은 and 조건이다.

= All

  • 서브쿼리의 조건절의 내용이 모두 해당이 되면 메인쿼리의 선택한 컬럼을 보여준다.
    ( 여기서는 NEWYORK 에 해당되는 deptno가 1,3 인데 이 두개를 모두 가진 데이터가 없기 때문에 데이터를 보여주지 않는다 )

  • 그래서 ALL을 사용할 때는 조건절의 내용이 하나만 나올 수 있는 걸 써야 한다.
    ( 여기서는 deptno 1인 sales 를 추가 조건으로 걸어 deptno 1인 사원의 ename,job 이 나오게 하였다. )

> ALL

  • 서브쿼리 내부 선택한 컬럼의 모든(ALL) 최대값 보다 비교할 조건절의 컬럼이 더 크면 큰 값을 가진 데이터의 컬럼들의 데이터를 보여준다.
    ( 여기서는 hiredate 의 최대값보다 큰 hiredate 을 가진 데이터들의 컬럼들의 데이터를 보여주고 있다 )

  • 최대값인 이유는 선택한 컬럼의 모든 조건을 만족해야 하기 때문이다.

< ALL

  • 서브쿼리 내부 선택한 컬럼의 모든(ALL) 최소값보다 비교할 조건절의 컬럼이 더 작으면 작은 값을 가진 데이터의 컬럼들의 데이터를 보여준다.
    ( 여기서는 hiredate 의 최소값보다 작은 hiredate 을 가진 데이터들의 컬럼들의 데이터를 보여주고 있다 )

  • 최소값인 이유는 선택한 컬럼의 모든 조건을 만족해야 하기 때문이다.

가령 10,11,12 조건을 만족해야 하는 경우 최소 10보다 작은 데이터들이어야 남은 11,12의 조건들도 자연스럽게 만족한다.

0개의 댓글

관련 채용 정보