티스토리 뷰
보통 하나의 완성된 쿼리 내에 존재하는 하위 쿼리들을 전부 서브 쿼리라고 총칭하기는 하는데 사용되는 위치에 따라 각각의 이름이 있다. 그냥 서브 쿼리라고만 부르면 큰 문제 없는데 간혹 이 명칭들을 이용해 의사소통이 이루어지는 경우가 있다. 이럴때 이 용어를 모르면 의사소통에 문제가 생기므로 정리해본다.
1. Nested Query (중첩 쿼리)
SELECT 절에 사용되는 서브 쿼리
SELECT (SELECT name FROM test) a FROM test;
2. Sub Query (하위 쿼리)
서브 쿼리의 명확한 사용처는 WHERE 절에 사용되었을 때다.
SELECT * FROM test WHERE name IN (SELECT name FROM test);
3. Inline View (인라인 뷰)
FROM 절에 사용되는 쿼리, 실행 계획에서는 Derived 라고 표현된다.
SELECT * FROM (SELECT * FROM test) tb;
4. Scalar SubQuery (스칼라 하위 쿼리)
위치에 따라 구분되는것이 아니라 결과에 따라 구분되는 용어. 컬럼과 로우가 1건이여서 단일 값으로 사용가능한 쿼리를 말한다. 주로 SELECT 절에 사용되어 Nested Query 와 혼용되어 사용된다.
SELECT (SELECT name FROM test LIMIT 1) a FROM test;
5. Row SubQuery (로우 하위 쿼리)
스칼라 쿼리의 경우 컬럼과 로우가 1건이였어야 하는데 Row SubQuery는 컬럼은 상관없고 로우만 1건인 경우를 말한다. 이 경우는 많이 쓰이지않는 것 같다.. 예제를 떠올려봤는데 거의 쓴적이 없는듯..
SELECT * FROM test INNER JOIN (SELECT * FROM test LIMIT 1) t ON test.name = t.name;
'DataBase' 카테고리의 다른 글
쿼리 캐싱 방지 (0) | 2017.01.12 |
---|---|
mysql 실행계획 2 (0) | 2017.01.10 |
mysql 실행계획 1 (0) | 2017.01.01 |
mysql, mariadb 조인 쿼리 최적화 알고리즘 (0) | 2017.01.01 |
자주사용하는 쿼리 모음 (0) | 2016.12.30 |
- Total
- Today
- Yesterday
- backend개발환경
- Git
- DesignPattern
- go-core
- 정규표현식
- java
- EffectiveJava
- Design Pattern
- OOP
- MySQL
- spring cloud
- generics
- mariadb
- frontend개발환경
- JavaScript Core
- java8
- Kotlin
- TEST
- Jackson
- JPA
- db
- javascript
- toby
- frontcode
- Spring
- code
- programming
- http
- servlet
- clean code
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |