SQL

easyjw·2025년 5월 22일

서브쿼리란?

서브쿼리란 SELECT문안에 다시 SELECT문이 기술 된 형태의 쿼리다.
앞서 쿼리와 SELECT문은 같은 의미라고 했다. 서브쿼리(하위 SELECT문) 의 결과인 쿼리(상위 SELECT문) 에서 받아 처리하는 구조이기때문에 중첩된 쿼리라고도 부른다.

서브 쿼리의 규칙

  • 서브 쿼리는 괄호(())로 묶어서 사용한다. 메인쿼리는 괄호로 묶을 필요가 없다.
  • 메인 쿼리와 서브쿼리를 연결하기 위해 단일 행 연산자나 다중행 연산자를 사용한다.
  • 메인쿼리와 서브쿼리의 연결형태는 연산자에 따라 의미가 다르다.
  • 메인 쿼리는 연산자의 왼쪽에 기술하고 서브쿼리는 연산자의 오른쪽에 기술한다.
  • 서브쿼리에서 메인 쿼리의 순서로 SELECT문이 실행된다.
  • 서브쿼리의 서브쿼리 형태로 계속 중첩하여 SQL문을 작성할수있다.

서브쿼리의 종류

단일 행 서브쿼리: 하나의 행을 검색하는 서브쿼리
다중 행 서브쿼리: 하나 이상의 행을 검색하는 서브쿼리
다중 열 서브쿼리: 하나 이상의 열을 검색하는 서브쿼리

연산자의 종류

단일행 연산자 : =, >, >=, <, <=, <>, != | 단일행 서브쿼리, 다중열 서브쿼리
다중행 연산자: IN,NOT IN, EXISTS, ANY ALL | 다중행 서브쿼리, 다중열 서브쿼리

단일 행 서브쿼리

단일 행 서브 쿼리는 서브 쿼리 SELECT문에서 얻은 한개 행의 결과 값을 메인 쿼리로 전달하는 서브쿼리다.
WHERE 절에 기술되는 열의 개수와 데이터 타입은 메인쿼리와 서브쿼리가 서로 같아야한다.

다중 행 서브쿼리

다중행 서브쿼리의 사용법은 단일 행 서브쿼리 와 같다.
다중행 서브쿼리는 하나이상의 결과 행을 메인 쿼리에 전달하는 경우에 사용한다.
다중 행 연산자를 사용한다.

다중행 연산자의 종류

IN: 같은값
NOT IN : 같은값이 아님
EXISTS : 값이 있으면 반환
ANY: 최소한 하나라도 만족하는 것(OR) <,= 비교 연산자와 같이 사용
ALL: 모두 만족하는것(AND) <,=등 비교 연산자와 같이 사용

다중 열 서브쿼리

다중 열 서브 쿼리는 메인 쿼리와 서브쿼리를 비교하는 WHERE 조건식에서 비교되는열이 여러개 일때 사용하는 서브쿼리입니다.

FROM 절 서브 쿼리 : 인라인 뷰

FROM 절에는 테이블뿐만 아니라 서브쿼리도 사용할 수 있습니다.
즉, FROM 절에 서브쿼리를 사용하면 특정 조건식을 갖는 SELECT 문을 테이블처럼 사용할 수 있습니다.
-> 이를 통해 SELECT 문을 효율적이고 간결하게 작성할 수 있습니다.
(이는 마치 가상 테이블, 즉 뷰(view)2와 같은 역할을 한다고 해서 인라인 뷰(inline view)라고도 부릅니다.)

DML: 데이터 삽입/갱신/삭제

DML 의 종류

INSERT: 테이블에 새로운 행을 삽입 한다.
UPDATE: 테이블에 있는 행의 내용을 갱신한다.
DELETE: 테이블의 행을 삭제한다.

INSERT: 행 삽입하기

INSERT명령어는 테이블에 새로운 행을 삽입할때 사용합니다.
새로운 데이터를 행단위로 입력합니다

UPDATE: 행 갱신하기

UPDATE 명령어는 기존의 데이터 값을 다른 데이터 값으로 변경할 때 사용합니다. UPDATE 절에 WHERE 조건 절을 사용할 수 있으며, 갱신하려는 대상의 조건을 기술할 수 있습니다.

DELETE: 행 삭제하기

DELETE 명령어는 테이블의 데이터를 삭제할 때 사용합니다. UPDATE 명령어와 마찬가지로 WHERE 절을 사용할 수 있습니다. WHERE 절을 생략하면 조건식이 없기 때문에 모든 데이터가 삭제되므로 주의합니다.

0개의 댓글