4. SQL 활용
안녕하세요, 브래드입니다.
오늘은 SQLD 요약정리 4편으로 SQL의 다양한 연산자와 서브쿼리 등에 관해 함께 알아보아요.
1-1. 조인의 개념
- 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
- 최소로 필요한 조인 조건의 개수 = 조인되는 테이블의 수 - 1
EX) 조인되는 테이블의 수가 4개라면, 최소로 필요한 조인 조건의 개수는 3개
1-2. 조인의 종류
- INNER JOIN: JOIN 조건에서 동일한 값이 있는 행만 반환함
- OUTER JOIN: JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용할 수 있음
1) LEFT OUTER JOIN
2) RIGHT OUTER JOIN
3) FULL OUTER JOIN
- NATURAL JOIN: 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI(=) JOIN을 수행함
- USING 조건절: 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있음
- ON 조건절: 칼럼 명이 다르더라도 JOIN 조건을 사용할 수 있음
- CROSS JOIN: JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
2-1. 일반 집합 연산자와 SQL
- UNION문: UNION
- INTERSECTION문: INTERSECT
- DIFFERENCE문: EXCEPT (ORACLE에서는 MINUS)
- PRODUCT문: CROSS JOIN
- UNION은 공통 교집합의 중복을 제거함. 또한 정렬 작업을 수행하여 시스템에 부하를 줌
- UNION ALL은 공통 교집합을 중복해서 보여줌
2-2. 순수 관계 연산자와 SQL
- SELECT 연산: WHERE 절로 구현
- PRODUCT 연산: SELECT 절로 구현
- JOIN: 다양한 JOIN 구현
- DIVIDE: 사용되지 않음
- 계층 형 질의를 사용하여 계층 형 데이터를 조회할 수 있음
- 계층 형 데이터는 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말함
- START WITH: 계층 구조 관계의 시작 위치를 지정하는 구문. (+ 루트 노드의 LEVEL 값은 1부터)
- CONNECT BY [PRIOR] A AND B
*PRIOR 자식 = 부모 : 순방향 전개
*PRIOR 부모 = 자식 : 역방향 전개
- ORDER SIBLINGS BY 칼럼: 형제 노드(동일 LEVEL) 사이에서 정렬을 수행
4-1. 서브쿼리 개념
- 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 지칭함
- 서브쿼리는 메인쿼리의 칼럼을 사용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음
4-2. 서브쿼리 사용 시 유의점
- 괄호를 감싸서 사용해야 함
- 단일행 또는 복수행 비교 연산자와 함께 사용 가능
- 단일행 비교 연산자는 서브 쿼리의 결과가 반드시 1건 이하임
- 서브쿼리에서는 ORDER BY 를 사용하지 못함. ORDER BY는 메인 쿼리의 마지막 문장에 위치해야 함
4-3. 동작 방식에 따른 서브쿼리
1) 비 연관 서브쿼리
: 서브쿼리가 메인 쿼리의 칼럼을 가지고 있지 않은 형태
2) 연관 서브쿼리
: 서브 쿼리가 메인 쿼리의 값을 가지고 있는 형태
4.4 반환 형태에 따른 서브 쿼리
1) 단일 행 서브쿼리
2) 다중 행 서브 쿼리
3) 다중 칼럼 서브 쿼리
*다중 칼럼 서브 쿼리는 칼럼 수와 칼럼 순서가 동일해야 함
- 독립성
- 편리성
- 보안성
- 그룹 함수를 활용하여 특정 집합의 소계, 총계, 총 합계를 구할 수 있음
- ROLLUP: 소 그룹간의 소계를 계산하는 기능. 인자의 순서가 중요함.
- CUBE: 다차원적인 소계를 계산하는 기능. 시스템에 많은 부담을 줌.
- GROUPING SETS: 특정 항목에 대한 소계를 계산하는 기능
- 분석함수로 알려져 있으며, 행과 행간의 관계에서 다양한 연산 처리를 할 수 있게 함
- 중첩하여 호출될 수 없음
8-1. 절차형 SQL 개념
- 일반적인 개발언어처럼 SQL문도 절차지향적인 프로그램 작성이 가능하도록 절차형 SQL을 제공함
- 오라클 기준으로 절차형 모듈의 종류는 프로시저, 사용자 정의 함수, 트리거가 존재함
- 오라클 기준으로 절차형 모듈을 PL/SQL이라고 부름
8-2. PL / SQL
- Block 구조로 되어있으며, 각 기능별로 모듈화가 가능
- PL/SQL은 오라클에 내장시킬 수 있으므로 어떠한 오라클 서버로도 이식이 가능함
8-3. PL / SQL BLOCK 구조
1) DECLARE(선언 부): 필수
2) BEGIN(실행 부): 필수
3) EXCEPTION(예외 처리 부): 선택
4) END: 필수
8-4. 프로시저와 트리거
1) 프로시저
- CREATE PROCEDURE 문법 사용
- EXECUTE/EXEC 명령어로 실행
- 내부에서 COMMIT, ROLLBACK 실행가능
2) 트리거
- CREATE TRIGGER 문법 사용
- 생성 후 자동으로 실행
- 내부에서 COMMIT, ROLLBACK 실행 불가능
지금까지 SQLD 요약 정리 4편으로 SQL 활용 파트에 관해 함께 공부해보았습니다.
다음 시간에는 마지막 파트인 SQL 최적화 기본원리에 대해 알아보아요.
브래드였습니다. 감사합니다.