Database/MySQL

MySQL 서브 쿼리에 대해서 총 정리

2mukee 2023. 10. 10. 22:32
320x100
320x100

서브 쿼리

: 하나의 SQL문 안에 포함되어있는 SQL문

: 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계를 가짐

 

- 예시

SELECT * FROM tableA a
WHERE (SELECT b.name FROM table B WHERE b.age = a.age) = a.nickName

: tableA에 대한 쿼리문에 tableB에 대한 쿼리문이 포함되어있다

 

- JOIN

: 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현하는 구문

 

 

 

 

 

 

JOIN과 서브쿼리의 차이

- JOIN

: 조인은 참여하는 모든 테이블이 대등한 관계에 있기 때문에 조인에 참여하는 모든 테이블의 컬럼을 어느 위치에서라도 자유롭게 사용할 수 있음

: 집합간의 곱의 관계이기 때문에 1:1 관계 테이블이 조인하면 1레벨의 집합이 형성되고, 1:M 관계가 조인하면 M 레벨의 집합이 됨. M:N의 경우 M*N 레벨의 집합이 생성됨

 

- 서브 쿼리

: 서브 쿼리는 메인 쿼리의 모든 컬럼을 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 컬럼을 사용할 수 없음

: 서브 쿼리의 레벨과는 상관없이 항상 메인 쿼리의 레벨로 결과 집합이 생성됨

 

 

 

 

 

 

서브 쿼리를 사용할때 주의점

: 서브 쿼리를 괄호로 감싸서 작성한다

: 서브 쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용할 수 있음

: 서브 쿼리에서는 ORDER BY를 사용하지 못함

 

 

 

 

 

서브 쿼리를 사용할 수 있는 곳

: SELECT

: FROM (인라인 뷰)

: WHERE

: HAVING

: ORDER BY

: INSERT 문의 VALUES

: UPDATE 문의 SET

 

 

 

 

 

서브 쿼리의 종류

- 단일 행 서브 쿼리

: 행 하나에 대한 서브 쿼리

SELECT * FROM tableA a
WHERE a.id = (SELECT b.id FROM tableb WHERE a.name = b.name)

 

- 다중 행 서브 쿼리

: 여러 행에 대한 서브 쿼리

SELECT * FROM tableA a
WHERE a.id IN (SELECT b.id FROM tableb WHERE a.name = b.name)

 

- 다중 컬럼 서브 쿼리

: 여러 컬럼에 대한 서브 쿼리

SELECT * FROM tableA a
WHERE (a.id, a.age) IN (SELECT b.id, b.age FROM tableb WHERE a.name = b.name)

 

 

 

 

 

 

 

Reference

 

SQL / MySQL 서브쿼리(SubQuery)

서브쿼리(Subquery) 서브쿼리(Subquery)란 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다. 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다. #메인쿼리 SELECT * FROM db_table WHERE

snowple.tistory.com

 

[MYSQL] 📚 테이블 조인(JOIN) - 그림으로 알기 쉽게 정리

SQL JOIN JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주는, Relation Database 에서 가장 많이 쓰이는 녀석이다. (INNER) JOIN 조인하는

inpa.tistory.com

 

300x250
728x90