본문 바로가기
데이터베이스설계

[데이터베이스설계] 3-12 Scalar 서브쿼리

by 젼젼39 2025. 2. 15.

- 서브쿼리의 값을 테이블이 아닌, 값으로 간주하게 됨.

- 단일값 예상할 때 사용함. 테이블이 아니라.

Scalar 서브쿼리 -      select, where 절에서 사용 가능    //원래 select절에는 컬럼을 열거
-      그러나 투플 수가 복수개가 나오면 런타임 에러가 나옴
 
-      select절에서 컬럼 열거하다가 이거 포함될 수 있음.
-      원래 SFW 결과는 테이블이지만, SELECT절에 사용될 때에는 그냥 scalar 값으로 간주한다.
-      select 컬럼명1, (SFW) as 컬럼명2
-      from, where로 거른 뒤, select절이 요구하는 형태로 result set을 만들게 된다.
-      투플 하나씩 계산한 결과를 가지고 결과 set에 넣기 직전, 새로운 컬럼 하나를 더 생성st..
-      근데 이제 outer 쿼리의 투플 하나 당 서브쿼리의 투플 수만큼 돌아가는
 

Q) list all departments along with the number of instructors in each department (학과명, 별 인원수)
=> select dept_name,
               ( select count (*)
                 from instructor
                 where department.dept_name = instructor.dept_name )
                 as num_instructors
      from department ;
 
      department의 값을 하나씩 투입해서 위의 서브쿼리를 돌린다.
      select 절의 첫 번째 컬럼인 dept_name 까지 뽑고, 그 뒤에 서브쿼리가 돌아간다.
 
//group by 안씀!
// department 하나 당, 서브쿼리의 교수자 테이블을 전부 돌면서 해당하는 교수 수 계산함
// 학과에 교수가 없는 경우도 있을 테니 department 테이블도 사용함