본문 바로가기

T아카데미/데이터베이스

9강. SQL(DML)7

[ 목차 ]

1. 서브쿼리

2. 서브쿼리의 종류

3. 다중행 연산자 ALL

4. 다중행 연산자 ANY

5. 다중행 연산자 IN/EXISTS

6. 집합연산 UNION

7. 집합연산 UNION ALL

8. 집합연산 INTERSECT

9. MINUS/EXCEPT 

 

1. 서브쿼리

1) 쿼리문 내에 또 다른 쿼리문이 있는 형태

2) 서브쿼리는 메인쿼리에 포함되는 관계

3) ( )를 사용해 감싸는 형태

4) ORDER BY 사용 불가

5) 사용 가능 위치 : SELECT, FROM, WHERE, HAVING, ORDER BY, VALUES(INSERT), SET(UPDATE)

 

2. 서브쿼리의 종류

1) 단일형 서브쿼리

  1] 결과가 레코드 하나인 서브쿼리

  2] 일반 연산자 사용

2) 다중행 서브쿼리

  1] 결과가 레코드 여러 개인 서브쿼리

  2] 다중행 연산자(IN, ALL, ANY, EXISTS) 사용

3)다중컬럼 서브쿼리

  1] 결과가 컬럼 여러 개인 서브쿼리

 

3. 다중행 연산자 ALL

1) 여러 개의 레코드의 AND 효과

2) 서브 쿼리 결과 중 가장 큰 값보다 더 큰 값이 나와야 함

 

4. 다중행 연산자 ANY

1) 여러 개의 레코드의 OR 효과

2) 서브 쿼리 결과 중 제일 작은 값보다 더 큰 값이 나와야 함

 

5. 다중행 연산자 IN/EXISTS

1) 결과값 중에 있는 것 중에서의 의미

2) IN은 전체 레코드를 스캔하지만 EXISTS는 존재여부만 확인만하고 스캔하지않기에 속도가 더 빠름

3) 존재할 경우 TRUE, 존재하지 않으면 FALSE 반환

 

6. 집합연산 UNION

select 쿼리1 union select 쿼리2 union ...

1) 두 쿼리의 결과값을 합쳐서 리턴, 합집합

2) 두 쿼리의 결과 형식이 동일해야 함

3) 기본적으로 distinct 적용

4) 다른 테이블이라도 결과값의 형식만 일치하면 됨

 

7. 집합연산 UNION ALL

select 쿼리1 union all select 쿼리2 union ...

1) 중복을 허용

 

8. 집합연산 INTERSECT

selet 쿼리1 intersect select 쿼리2 ...

1) 두 쿼리의 결과값 중 공통값을 찾아서 리턴, 교집합

2) 두 쿼리의 결과 형식이 동일해야 함

3) 기본적으로 distinct 적용

4) 다른 테이블이라도 결과값의 형식만 일치하면 됨

 

9. MINUS/EXCEPT 

selet 쿼리1 minus select 쿼리2 ...

1) 쿼리1 결과값에서 쿼리2 결과갑을 빼서 리턴

2) MySQL에서는 지원하지 않음

'T아카데미 > 데이터베이스' 카테고리의 다른 글

11강. SQL(DDL)2  (0) 2020.03.23
10강. SQL(DDL)1  (0) 2020.03.23
8강. SQL(DML)6  (0) 2020.03.20
7강. SQL(DML)5  (0) 2020.03.20
6강. SQL(DML)4  (0) 2020.03.20