서브쿼리란 SELECT문안에 다시 SELECT문이 기술 된 형태의 쿼리다.
앞서 쿼리와 SELECT문은 같은 의미라고 했다. 서브쿼리(하위 SELECT문) 의 결과인 쿼리(상위 SELECT문) 에서 받아 처리하는 구조이기때문에 중첩된 쿼리라고도 부른다.
단일 행 서브쿼리: 하나의 행을 검색하는 서브쿼리
다중 행 서브쿼리: 하나 이상의 행을 검색하는 서브쿼리
다중 열 서브쿼리: 하나 이상의 열을 검색하는 서브쿼리
단일행 연산자 : =, >, >=, <, <=, <>, != | 단일행 서브쿼리, 다중열 서브쿼리
다중행 연산자: IN,NOT IN, EXISTS, ANY ALL | 다중행 서브쿼리, 다중열 서브쿼리
단일 행 서브 쿼리는 서브 쿼리 SELECT문에서 얻은 한개 행의 결과 값을 메인 쿼리로 전달하는 서브쿼리다.
WHERE 절에 기술되는 열의 개수와 데이터 타입은 메인쿼리와 서브쿼리가 서로 같아야한다.
다중행 서브쿼리의 사용법은 단일 행 서브쿼리 와 같다.
다중행 서브쿼리는 하나이상의 결과 행을 메인 쿼리에 전달하는 경우에 사용한다.
다중 행 연산자를 사용한다.
IN: 같은값
NOT IN : 같은값이 아님
EXISTS : 값이 있으면 반환
ANY: 최소한 하나라도 만족하는 것(OR) <,= 비교 연산자와 같이 사용
ALL: 모두 만족하는것(AND) <,=등 비교 연산자와 같이 사용
다중 열 서브 쿼리는 메인 쿼리와 서브쿼리를 비교하는 WHERE 조건식에서 비교되는열이 여러개 일때 사용하는 서브쿼리입니다.
FROM 절에는 테이블뿐만 아니라 서브쿼리도 사용할 수 있습니다.
즉, FROM 절에 서브쿼리를 사용하면 특정 조건식을 갖는 SELECT 문을 테이블처럼 사용할 수 있습니다.
-> 이를 통해 SELECT 문을 효율적이고 간결하게 작성할 수 있습니다.
(이는 마치 가상 테이블, 즉 뷰(view)2와 같은 역할을 한다고 해서 인라인 뷰(inline view)라고도 부릅니다.)
INSERT: 테이블에 새로운 행을 삽입 한다.
UPDATE: 테이블에 있는 행의 내용을 갱신한다.
DELETE: 테이블의 행을 삭제한다.
INSERT명령어는 테이블에 새로운 행을 삽입할때 사용합니다.
새로운 데이터를 행단위로 입력합니다
UPDATE 명령어는 기존의 데이터 값을 다른 데이터 값으로 변경할 때 사용합니다. UPDATE 절에 WHERE 조건 절을 사용할 수 있으며, 갱신하려는 대상의 조건을 기술할 수 있습니다.
DELETE 명령어는 테이블의 데이터를 삭제할 때 사용합니다. UPDATE 명령어와 마찬가지로 WHERE 절을 사용할 수 있습니다. WHERE 절을 생략하면 조건식이 없기 때문에 모든 데이터가 삭제되므로 주의합니다.