DBMS

4 . 서브쿼리

imysydesu 2026. 6. 8. 14:19

 

 

1 . 서브쿼리(sub Query)

 

 

 

 

 

  • sql문 안에 들어가는 또 다른 sql(select) 문
  • select . . . from where 컬럼이름 = (select . . . );
  • ex) 김사과보다 포인트가 많은 회원을 검색하기
          - 이전까지 배운 것 활용 : select point from member where name='김사과';
             select * from member where point > 150;
           - 서브쿼리 사용 : select * from member where point > (select point from member where name = '김사과');

 

 

1 - 1 . 단일 행 서브쿼리

 

  • 결과가 하나의 값만 나오는 서브쿼리

 

ex) 포인트가 가장 높은 회원 검색하기

=> select * from member where point = ( select max(point) from member);

 

 

 

1 - 2 . 다중 행 서브쿼리

 

  • 조건을 줘서 결과가 여러 개 나오게 하는 쿼리
  • 연산자 in, any, all 사용

 

ex) 포인트가 150 이상인  userid 목록에 포함된 회원 검색하기

=> select * from member where userid in (select userid from member where point >= 150);

 

 

 

1 - 3 . from 절 서브쿼리

 

  • 서브쿼리 결과를 임시 테이블처럼 사용하는 방식

ex) 포인트가 150 이상인  멤버의 이름과 포인트를 조회해 임시 테이블 만들기

=> select name, point from (select name, point from member where point >= 150) as high_point_member;

 

 

 

1 - 4 . select 절 서브쿼리

 

  • 조회 결과에 서브쿼리 결과를 함께 보여주는 방식

ex) 각 회원의 포인트와 전체 평균 포인트를 함께 검색하기

=> select name, point, (selct avg(point) from member) as avg_point from member;

 

 

 

1 - 5 . exists 서브쿼리

 

  • 존재 여부를 확인할 때 사용

ex) 주문 내역이 있는 회원을 검색

=> select * from member m where exists (select 1 from orders o where o.member_idx = m.idx);

 

 

 

 

 


 

 

 

 

 

2 . 서브쿼리 활용하기

 

 

 

 

 

 

2 - 1 . 테이블 생성

 

 

 

 

 

2 - 2 . 서브쿼리 활용

 

 

  • 주문한 적이 있는 회원들만 조사하기

 

 

  • 주문한 적이 없는 회원들만 조사하기

 

 

  • 가장 비싼 상품을 주문한 회원 조회하기

 

 

  • 가장 비싼 상품을 주문한 회원의 이름과 상품명 조회하기

 

 

 

- insert문도 서브쿼리 사용 가능

 

 

 

 

 

 


 

 

 

 

 

 

 

3  . 유니온 (UNION)

 

 

 

 

  • 여러 개의 select 결과를 하나로 합쳐주는 기능
  • 조회 결과를 위아래로 이어 붙이는 기능
  • union 사용 시 중복된 데이터를 삭제함

ex)  서울 회원과 부산 회원 합치기

    select name, address1 from member where address1 like '서울%'
    union
    select name, address1 from member where address1 like '부산%';

 

 

 

  • union 활용하기

 

 

 

 

 


'DBMS' 카테고리의 다른 글

5 . 사용자 계정  (0) 2026.06.08
6 . MySQL 함수  (0) 2026.06.08
3 . 정규화  (0) 2026.06.08
2 . SQL  (0) 2026.06.05
1 . 데이터베이스 기초 (DB, DBMS, RDBMS, SQL)  (0) 2026.06.04