20221030_WIL(SQLD part.2)
20221030_WIL(SQLD part.2)
들어가며
이제 차주 토요일이면 SQLD 시험이 예정되어 있다. 함께 준비하는 다른 것들도 있어 이번주도 정말 정신없는 한 주 였다.
오늘도 지난주에 이어 필기하였던 SQLD 시험 관련 내용을 정리하여 포스팅하고자 한다.
서브쿼리
하나의 쿼리 안에 존재하는 또 다른 쿼리이다.
바깥에 있는 것을 메인쿼리, 안에 있는 것을 서브쿼리라 한다.
서브 쿼리는 위치에 따라 다음과 같이 나눌 수 있다.
SELECT절 - 스칼라 서브쿼리
FROM절 - 인라인 뷰
WHERE절, HAVING절 - 중첩 서브쿼리
+서브쿼리는 여러 건의 데이터를 반환할 수도 있다.
스칼라 서브쿼리
주로 SELECT 절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다.
반드시 하나의 값만을 반환해야 하며 그렇지 않은 경우 에러가 발생한다.
인라인뷰
FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능한다.
중첩서브쿼리
WHERE절과 HAVING절에 사용할 수 있다.
중첩서브쿼리는 메인 쿼리와 관계에 따라 다음과 같이 나눌 수 있다.
1. 비연관 서브쿼리
메인쿼리와 관계를 맺고 있지 않음
서브쿼리 내에 메인 쿼리의 컬럼이 존재하지 않음
2. 연관 서브쿼리
메인 쿼리와 관계를 맺고 있음
서브쿼리 내에 메인쿼리의 컬럼 존재
중첩 서브쿼리는 반환하는 데이터 형태에 따라 다름과 같이 나눌 수 있다.
2-1. 단일 행 서브 쿼리
서브 쿼리가 1건 이하의 데이터를 반환
단일 행 비교 연산자와 함께 사용 가능(ex, =, <, >, <=, >=, <>)
2-2. 다중 행 서브 쿼리
서브쿼리가 여러 건의 데이터를 반환
다중 행 비교 연산자와 함께 사용(ex, IN, ALL, ANY, SOME, EXISTS)
다중행 서브쿼리는 '=' 조건 사용 불가!
2-3. 다중 컬럼 서브 쿼리
서브쿼리가 여러 컬럼의 데이터를 반환
뷰
특정 SELECT 문에 이름을 붙여서 재사용이 가능토록 저장해놓은 오브젝트
CREATE OR REPLACE VIEW DEPT_MEMBER AS
SELECT A.DEPARTMENT_ ID,
B.FIRST_NAME,
FROM DEPARTMENTS A
LEFT OUTER JOIN EMPLOYEES B
ON A.DEPARTMENT_ID = B.DEPARTMENT_ID
뷰는 가상의 테이블이다.
고로 실제 데이터를 저장하지 않고 해당 데이터를 조회해오는 SLECT문만 가지고 있다.
뷰는 데이터 저장 X, 조회만!
다시금 마인드셋을 다잡아야하는 시기가 온 것 같다.
매일 열심히 무언가를 하고는 있지만 가시적인 성과가 없으니 괜시리 조바심이 생긴다.
매번 그랬듯 서두르기만 하면 일을 그르칠 수 있는 법
현재의 내가 할 수 있는 최선을 다 해보자
그러면 분명 좋은 결과가 있으리라