쉽게 생각하면, 변수 같은 느낌
SQL문을 또 다른 SQL문의 부분에 넣는 것
또 다른 SELECT~ 쿼리의 뜻 : SELECT로 시작 하는 쿼리의 틀을 말함
참고)
https://velog.io/@supernova77/SQL-01-%EA%B8%B0%EC%B4%88-10
SELECT 에서 사용되는 서브쿼리
하나의 컬럼에 대해 하나의 행만 반환
출력 되는 하나의 값이 없다면 NULL값 반환
메인쿼리에서 출력되는 튜플의 수 = 서브쿼리 반복 실행

[ ❗ ] 주의사항
메인쿼리, 서브쿼리 의 경우
👉 메인쿼리를 기준으로, 서브쿼리가 움직임
(❗) 조인방식으로 하면, OUTER JOIN
[❗❗] OUTER JOIN 사용시 👉 OR 기호 사용 ❌❌
사용하고 싶다면, AND안에 소괄호로 품어야함 !!
ANSI문법의 경우에는 상관없이 모두 (AND,OR) 사용 가능
[ ❓ ] 아우터조인 VS 서브쿼리
- 아우터조인 : 한 번 쓰고, 텀이 길 때 성능이 좋다
- 서브쿼리 : 자주 쓸 경우, 성능이 좋다
(자주 쓸수록, 컴퓨터 캐시에 저장 되어 속도 ↑)




[ ❓ ] 그냥 GROUP BY 하지, 왜 번거롭게 중첩 서브쿼리를 쓰나요.
👉 GROUP BY의 경우,
그룹으로 묶어서 SELECT절에서, 집계함수, GROUP BY 해당하는 컬럼 밖에 표현이 불가
👉 중첩 서브쿼리의 경우,
메인쿼리 SELECT 부분에 모든 정보 표현이 가

참고)
NULL은 비교,연산 ❌❌
👉 정렬시, NULL을 가장 큰 값으로 인식함 (오라클만)
다른곳은 가장 작은 값으로 인식



IN : 컬럼 내 모든 데이터 조회
EXISTS : 데이터 조회 되면 / 바로 다음 작업



//NULL 값은 비교 연산 불가함 , BUT 정렬시, NULL값을 가장 큰 값으로 인식함 !!!!
// 오라클에서만 NULL값 가장 큰 값으로 인식 !!!
// 다른 곳에서는 NULL값 가장 작은 값으로 인식 !!!