SubQuery

Jinhyeon Son·2020년 5월 24일
0

정리

목록 보기
15/17

SubQuery

쿼리문 안에서 사용되는 하부 SELECT문
ex) 
SELECT point FROM student
WHERE point= (SELECT COUNT(*) FROM table1) AS table_count
  • SELECT SubQuery

    SELECT (SELECT COUNT(*) FROM table1) AS table_count

    이 때 서브쿼리는 스칼라 형태여야 하며 후에 설명한다

  • SET SubQuery

    UPDATE TABLE table1 SET attr1 = (스칼라 서브쿼리)
  • FROM SubQuery

    SELECT * FROM (SELECT * FROM table1) AS sq

    위 쿼리는 Oracle DB에서 LIMIT을 대체하는 용도로 사용된다
    sq는 전체 쿼리가 아닌 서브쿼리에 대한 별명으로 동작한다

  • INSERT SubQuery

    • VALUES문의 일부로 사용할 경우
      INSERT INTO table1 VALUES(
      (SELECT COUNT(*) from table2), # 스칼라 값
      (SELECT COUNT(*) from table3)  # 스칼라 값
      )
    • VALUES문 대신 사용할 경우
      INSERT INTO table1 SELECT * FROM table2
      위 쿼리는 table2의 모든 레코드를 table1으로 복사하며
      INSERT SELECT문이라 불리며 괄호를 사용하지 않아도 동작한다
  • IN

    SELECT * FROM table1 WHERE id IN (SUBQUERY) # 또는 집합

    WHERE절의 속성이 IN 뒤의 서브쿼리, 집합에 존재하면 리턴한다

  • EXISTS

    EXISTS (SubQuery) 형태로 사용되며 SubQuery의 리턴이 존재할 경우 true를 리턴한다

스칼라 쿼리란?

리턴으로 하나의 값을 가질때 이를 스칼라 값이라고 하며
쿼리의 리턴이 스칼라 값일 경우 스칼라 쿼리라고 한다

서브쿼리의 Pattern은 다음과 같다

  • 하나의 값만을 리턴 (스칼라 값)
  • 하나의 속성에 대한 복수의 record
  • 복수의 속성에 대한 복수의 record

0개의 댓글