Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Today I Learned

서브쿼리, count함수, 상하관계쿼리 본문

DB

서브쿼리, count함수, 상하관계쿼리

꾸주니12 2022. 5. 1. 17:30

서브쿼리란?

  • 쿼리 안의 쿼리가 들어있는 것!
  • 서브쿼리는 사전에 추출된 내용에서 재검색하거나, 검색된 내용을 가상 컬럼을 만들어 추가할 수 있다.
  • 즉 서브쿼리를 사용하는 이유는 가져온 데이터를 재 정제하기 위해서 

  • 최종적으로 찾아야 하는거 먼저 배치
  • 괄호 먼저 실행하고 나온 결과값과 함께 앞의 쿼리문을 처리!

 

- 또다른 서브쿼리문 - 

select ename,job from emp where deptno in (select deptno from dept where loc ='LA' or loc ='BOSTON' );

: 먼저 실행되는 괄호안 쿼리문의 값이 여러개일 경우 or조건문대신 쓸 수 있었던 in 쓰기 

 

- + - 

  • ALL : 서브쿼리의 결과 중에서 모든 값이 일치 하면 참  : 이거 조건 다 맞아? 확인할때?
  • EXSITS : 기본적으로 IN과 같으나 참/거짓 반환 : 하나라도 있으면 참 반환하는듯?

 

- 값이 여러개일 경우 하나만 뽑아 오는 방법 -

1. limit  2.min함수

 

- 부등호를 사용한 서브쿼리문 -

select * from emp where hiredate < (select min(hiredate) from emp where job = 'manager') order by hiredate;

: 직책(job)이 manager 인 사원들(여러명 일 경우 입사일이 가장 빠른 사원 기준) 보다 입사일이 빠른 직원 데이터 가져오기 

 

 

- any -

  • in 과 같지만 차이점이 있다. : 부등호 유무
  • = ANY : in과 같은 효과 (: 결과값 중에 뭐하나 걸리면 됨)
  • > ANY : 최소값 보다 크면 
  • < ANY : 최대값 보다 작으면
  • 단점 : '최소값보다 작은거'랑 '최대값보다 큰거'는 any 로 못구함
  • 부등호와 함께 min max로 쓰는 방법이 더 명시적

 

 

+서브쿼리문 5번 예제+ (어려움)

[부서별 인원수와  부서명 , 부서위치, 부서인원수 표시하기]

밑줄 부분 / emp테이블 부서번호와 dept 테이블 부서번호가 같은 ? emp테이블 부서번호와 dept 테이블 부서번호가 같을 때?

저렇게 써주면서 from dept 뒤에 where deptno =1;을 지워줌 

 

 

 

- count 함수-

  • count(컬럼명) 은 컬럼의 행을 세어준다.
  • 기본키를 해주는게 제일 좋다 

 

- 상하관계쿼리 - 

(서브쿼리에서 쿼리는 조건으로 쓰였다면)

  • 하나의 쿼리문이 다른 쿼리문의 일부,구성품처럼 쓰이는 것 (다른쿼리의 컬럼 혹은 테이블로 사용해봤음)

별칭을 사용하려면 별칭을 명시해주자

 

 

 

 

 

 

08_SUB

'DB' 카테고리의 다른 글

뷰(View)  (0) 2022.05.06
인덱스  (0) 2022.05.06
in & exists 그리고 any & all  (0) 2022.05.02
집합  (0) 2022.05.01
조인(Join)  (0) 2022.05.01