728x90

select distinct T.name

from instructor as T, instructor as S

where T.salary > S.salary and S.dept_name = ’Biology’;

 

# some

- (하나 이상보다 큰) > some 절을 이용

  select name

  from instructor

  where salary > some (select salary

                                from instructor

                                where dept_name = ’Biology’);

 

5 > some (0,5,6) = true

5 < some (0,5) = false

5 = some (0,5) = true

5 <> some (0,5) = true

 

(= some)in 과 같음

(<> some) not in 과 같지 않음

 

# > all

- 생물학과의 각 교수들보다 급여가 많은 모든 교수들의 이름을 구하라

  select name

  from instructor

  where salary > all (select salary

                            from instructor

                            where dept name = ’Biology’);

 

5 > all (0,5,6) = false

5 < all (6,10) = true

5 = all (4,5) = false

5 <> all (4,6) = true

 

(<> all) not in 과 같음

(= all) in 과 같지 않음

 

# 빈 릴레이션에 대한 테스트

- exists 구문은 인자의 하위 질의가 비어있지 않을 때 true 리턴

- exists

- not exists

 

# exists

- 2009년 가을 학기와 2010년 봄 학기에 둘 다 있는 수업을 구하라

  select course_id

  from section as S

  where semester = ’Fall’ and year= 2009 and

                  exists (select *

                           from section as T

                           where semester = ’Spring’ and year= 2010

                                      and S.course_id= T.course_id);

- 연관된 하위 질의

- 연관 이름

 

# not exists

- 생물학과에서 제공하는 모든 수업을 수강하는 모든 학생을 구하라

  select distinct S.ID, S.name

  from student as S

  where not exists ( (select course_id

                            from course

                            where dept_name = ’Biology’)

                            except

                           (select T.course_id

                            from takes as T

                            where S.ID = T.ID));

- ( = all )을 사용하여 위의 질의 변경 가능

  select distinct student.ID, name

  from student, takes

  where s.ID= take. ID and course_id = all(select course_id from course

                                                       where dept_name= 'Accounting')

 

# 중복 투플 부재에 대한 테스트 : unique

- unique 절은 하위 질의가 중복된 투플을 가지지 않으면 true.

- 2009년에 많아야 한 번 제공된 모든 수업을 구하라

  select T.course_id

  from course as T

  where unique (select R.course_id

                      from section as R

                      where T.course_id=R.course_id and R.year = 2009);

where 1 = (select * from section where year=2009 and section.course_id=co.c_id)

 

반응형

'전공 공부 > 데이터베이스시스템' 카테고리의 다른 글

데이터베이스의 변경 – 삽입  (0) 2021.01.01
데이터베이스의 변경 – 삭제  (0) 2021.01.01
중첩 하위 질의  (0) 2020.12.31
SQL  (0) 2020.12.31
관계 연산자  (0) 2020.12.31
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기