본문 바로가기

DataBase/SQL

서브쿼리

스칼라값

여러 가지 패턴 중에서도 다음과 같은 네 가지가 일반적인 서브쿼리 패턴이다.

 

1. 하나의 값을 반환하는 패턴

2. 복수의 행이 반환되잠 열은 하나인 패턴

3. 하나의 행이 반환되지만 열이 복수인 패턴

4. 복수의 행, 복수의 열이 반환되는 패턴

이때 패턴 1만 다른 패턴과 다르다.

이는 다른 패턴과 달리 하나의 값을 반환하기 때문이다.

'단일 값' 으로도 통용되지만 데이터베이스 업계에서는 '스칼라 값'이라 불리는 경우가 많다.

 

where, from, select 에 서브쿼리 가능

insert, delete , update 도 서브쿼리 가능.

 

상관 서브쿼리

UPDATE sample551 set a ='있음' where
EXISTS (select * from sample552 where no2 = no);

update 명령(부모)에서 where 구에 괄호로 묶은 부분이 서브쿼리 (자식) 가 된다.

부모 명령에서 sample551를 갱신한다. 자식인 서브쿼리에서는 sample552 테이블의 no2 열 값이 부모의 no 열 값과 일치하는 행을 검색한다. 

이처럼 부모 명령과 자식인 서브쿼리가 특정 관계를 맺는 것을 '상관 서브쿼리' 라 부른다.

상관 서브쿼리에서는 부모와 연관되어 처리되기 때문에 서브쿼리 부분만 따로 떼어내서 실행시킬 수 없다.

 

IN절

스칼라 값끼리 비교할 때는 = 연산자를 사용한다.

다만 집합을 비교할 때는 사용할 수 없다.

IN을 사용하면 집합 안의 값이 존재하는지를 조사할 수 있다.

 

IN에서는 오른쪽에 집합을 지정한다.

왼쪽에 지정된 값과 같은 값이 집합 안에 존재하면 참을 반환한다.

집합 부분은 서브뤄리로도 지정할 수 있다.

 

EXISTS 대신에 IN을 사용해도 같은 결과가 나온다.

 

 

'DataBase > SQL' 카테고리의 다른 글

SQL 뷰  (0) 2020.06.29
Sql 인덱스  (0) 2020.06.29
복수의 테이블 다루기  (0) 2020.06.23
CASE 문  (0) 2020.06.22
mysql) time zone , window 버전 설치,변경  (0) 2020.03.07