[ 목차 ]
1. 서브쿼리
2. 서브쿼리의 주의사항
3. 서브쿼리가 사용되는 곳
4. 동작 방식에 따른 서브쿼리 종류
5. 반환되는 데이터 형태에 따른 서브쿼리 분류
6. 단일 행 서브쿼리
7. 다중 행 서브쿼리
8. 다중 칼럼 서브쿼리
9. 연관 서브쿼리
10. SELECT 절의 서브쿼리
11. FROM 절의 서브쿼리
12. HAVING 절의 서브쿼리
13. UPDATE 문의 서브쿼리
14. 뷰
15. 뷰의 장점
1. 서브쿼리
1) 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
2) 알려지지 않은 기준을 이요한 검색을 위해 사용
3) 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있으나 반대는 불가능
4) 서브쿼리는 서브쿼리의 레벨과는 상관없이 항상 메인쿼리 레벨로 결과 집합이 생성
2. 서브쿼리의 주의사항
1) 괄호로 감싸서 사용
2) 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능
3) 단일 행 비교 연산자는 반드시 서브쿼리의 결과가 1건 이하, 복수 행 연산자는 서브쿼리의 결과 건수와 상관 없음
4) 서브쿼리에서 ORDER BY 사용 불가
3. 서브쿼리가 사용되는 곳
1) SELECT
2) FROM
3) WHERE
4) HAVING
5) ORDER BY
6) INSERT 문의 VALUES
7) UPDATE 문의 SET
4. 동작 방식에 따른 서브쿼리 종류
1) Un-Correlated 서브쿼리 : 서브쿼리가 메인쿼리 칼럼을 가지고 있지 않은 형태로, 메인쿼리에 값을 제공하기 위한 목
적으로 주로 사용
2) Correlated 서브쿼리 : 서크붜리가 메인쿼리 칼럼을 가지고 있는 형태로, 메인쿼리가 먼저 수행되어 읽혀진 데이터를
서브쿼리에서 조건이 맞는지 확인하고자 할 때 사용
3) 항상 메인쿼리에서 읽혀진 데이터에 대해 서브쿼리에서 해당 조건이 만족하는지를 확인하는 방식으로 수행
4) 그러나 실제 서브쿼리의 실행순서는 상황에 따라 바뀜
5. 반환되는 데이터 형태에 따른 서브쿼리 분류
1) 단일 행 서브쿼리 : 서브쿼리 실행 결과가 항상 1건 이하, 단일 행 비교 연산자와 사용
2) 다중 행 서브쿼리 : 서브쿼리 실행 결과가 여러 건, 다중 행 비교 연산자와 사용
3) 멀티 칼럼 서브쿼리 : 서브쿼리의 실행 결과로 여러 칼럼 반환
서브쿼리와 메인쿼리에서 비교하고자 하는 칼럼 수, 위치 동일해야 함
6. 단일 행 서브쿼리
1) 단일 행 비교 연산자와 함께 사용할 때는 서브쿼리 결과 건수가 반드시 1건 이하영 ㅑ함
2) 2건 이상일 경우 런 타임 오류 발생
7. 다중 행 서브쿼리
1) 결과가 2건 이상 반환될 수 있다면 다중 행 비교 연산자와 함께 사용
2) IN : 서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미
3) ALL : 서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미
4) ANY : 서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미
5) EXISTS : 서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미
8. 다중 칼럼 서브쿼리
1) 서브쿼리의 결과로 여러 개의 칼럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것을 의미
2) SQL Server 에서는 지원되지 않는 기능
9. 연관 서브쿼리
1) 서브쿼리 내에 메인쿼리 칼럼이 사용된 서브쿼리
2) EXISTS 서브쿼리는 항상 연관 서브쿼리로 사용
3) EXISTS 서브쿼리의 특징은 아무리 조건을 만족하는 건이 여러 건이더라도 조건을 만족하는 한 건만 찾으면 검색 종료
10. SELECT 절의 서브쿼리
1) = 스칼라 서브쿼리
2) 한 행, 한 칼러만을 반환
3) 칼럼을 쓸 수 있는 대부분의 곳에서 사용 가능
4) 스칼라 서브쿼리는 메인쿼리 결과 건수만큼 반복수행
5) 스칼라 서브쿼리 도한 단일 행 서브쿼리기 때문에 결과가 2건 이상 반환되면 오류
11. FROM 절의 서브쿼리
1) = 인라인 뷰
2) 서브쿼리의 결과가 마치 실행 시에 동적으로 생성된 테이블인 것처럼 사용
3) SQL 문이 실행될 때만 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 해당 정보가 저장되지 않음
4) 일반적인 뷰를 정벅 뷰라 하고 인라인 뷰를 동적 뷰라 지칭
5) ORDER BY절을 사용 할 수 있으며, TOP-N 쿼리라 지칭
6) 탑-N 쿼리 : 인라인 뷰에서 정렬을 수행하고 정렬된 결과 중에서 일부 데이터를 추출하는 것
7) 탑-N 쿼리를 수행하기 위해서는 정렬 작업과 정렬 결과 중에서 일부 데이터만을 추출할 수 있는 방버이 필요
8) 오라클에서는 ROWNUM 연산자를 사용해 결과로 추출하고자 하는 데이터 건수 제약 가능
12. HAVING 절의 서브쿼리
1) 그룹함수와 사용될 때 그룹핑된 결과에 대해 부가적인 조건을 주기 위해 사용
13. UPDATE 문의 서브쿼리
1) 서브쿼리를 사용한 변경 작업을 할 때 서브쿼리의 결과가 NULL반환 시 해당 컬럼의 결과가 NULL이 되는 것을 주의
14. 뷰
1) 실제 데이터를 가지고 있지 않으며 단지 뷰 정의만을 가지고 있는 것
2) 뷰 정의를 잠조해서 DBMS 내부적으로 질의를 재작성하여 질의를 수행
3) 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블이라고도 지칭
15. 뷰의 장점
1) 독립성 : 테입르 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
2) 편리성 : 복잡한 질의를 뷰로 생성하여 관련 질의를 단순하게 작성 가능
3) 보안성 : 특정 칼럼을 빼고 생성하여 사용자에게 정보를 감출 수 있음
4) 데이터를 저장하지 않고도 데이터를 조회할 수 있음
5) 제거 시 DROP VIEW 문을 사용
'자격증 > SQLD' 카테고리의 다른 글
SQLD 요점정리 파일 (0) | 2020.03.18 |
---|---|
SQLD 2과목 2-2장. 집합연산자 (0) | 2020.03.12 |
SQLD 2과목 1-9장. 조인 (0) | 2020.03.12 |
SQLD 2과목 1-8장. ORDER BY절 (0) | 2020.03.12 |
SQLD 2과목 1-7장. GROUP BY, HAVING절 (0) | 2020.03.12 |