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 |