SELECT 문의 각 절들은 먼저 써야 하는 순서들이 정해져있다. Show 이 순서는 반드시 지켜야 함 더 앞에 나와야 하는 순서대로 보면 1. SELECT 이 순서대로 사용해야 한다. 쓸 때는 위 순서대로 써줘야 하는데 FROM 어떤 식으로 해석 및 실행되는지를 하나씩 차례대로 살펴보자 FROM : 어느 테이블을 대상으로 할 것인지를 먼저 결정 WHERE : 해당 테이블에서 특정 조건(들)을 만족하는 row들만 선별 GROUP BY : row들을 그루핑 기준대로 그루핑. 하나의 그룹은 하나의 row로 표현됨 HAVING : 그루핑 작업 후 생성된 여러 그룹들 중에서, 특정 조건(들)을 만족하는 그룹들만 선별. SELECT : 모든 컬럼 또는 특정 컬럼들을 조회. SELECT 절에서 컬럼 이름에 alias (AS) 를 붙인 게 있다면, 이 이후 단계(ORDER BY, LIMIT)부터는 해당 alias를 사용할 수 있음. ORDER BY : 각 row를 특정 기준에 따라서 정렬. LIMIT : 이전 단계까지 조회된 row들 중 일부 row들만을 추림 서브쿼리(Subquery)서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고도 부른다. 서브쿼리는 다음과 같이 괄호() 로 감싸져서 표현 된다. [ 서브 쿼리 실행 순서 ]
* Java 객제지향의 상속과 똑같은 개념이다. [ 서브 쿼리 장점 ]
서브쿼리의 위치에 따른 명칭
중첩 서브쿼리( Nested Subquery )- WHERE문에 나타나는 서브쿼리
→ 조건값을 상수로 할때
→ 조건값을 select로 특정할때 (단 결과가 값이 하나여야됨)
→ 조건에 값이 여러개 들어올땐 any. → any는 in과 동일한 의미. → or를 의미한다.
→ all은 도출된 모든 조건값에 대해 만족할때. → and를 의미한다. 인라인 뷰(Inline View)- FROM문에 나타나는 서브쿼리 - 참고로 서브 쿼리가 FROM 절에 사용되 경우 무조건 AS 별칭을 지정해 주어야 한다.
스칼라 서브쿼리( Scalar Subquery )- SELECT 문에 나타나는 서브쿼리 - 딴 테이블에서 어떠한 값을 가져올때 쓰임 - 하나의 레코드만 리턴이 가능하며, 두개 이상의 레코드는 리턴할 수 없다. - 일치하는 데이터가 없더라도 NULL값을 리턴할 수 있다. 이는 원래 그룹함수의 특징중에 하나인데 스칼라 서브쿼리 또한 이 특징을 가지고 있다.
서브 쿼리 실행 조건
서브쿼리 사용 가능 한 곳MySQL에서 서브쿼리를 포함할 수 있는 외부쿼리는 SELECT, INSERT, UPDATE, DELETE, SET, DO 문이 있다. 이러한 서브쿼리는 또 다시 다른 서브쿼리 안에 포함될 수 있다.
+ 서브쿼리도 별칭(alias) 사용이 가능하다. 서브쿼리 실전 예제
[회사원 정보 테이블] 중첩 서브쿼리 - 단일 행
중첩 서브쿼리 - 복수(다중) 행
인라인 뷰(Inline View)
스칼라 서브쿼리(Scalar Subquery)
INSERT 문 서브쿼리 (INSERT Subquery)
DELETE 문 서브쿼리 (DELETE Subquery)
UPDATE 문 서브쿼리 (UPDATE Subquery)
# 참고자료 https://java119.tistory.com/49?category=809222 |