++/자격증

[SQLD] 2과목 - SQL 기본 및 활용(2)

writtenbyrla 2023. 11. 20. 14:27

순수 관계 연산자

SELECT, PROJECT, JOIN, DIVIDE(현재 사용 X)

 


JOIN

  1. INNER JOIN
  2. CROSS JOIN
  3. LEFT OUTER JOIN / RIGHT OUTER JOIN
  4. FULL OUTER JOIN: LEFT OUTER JOIN과 RIGHT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일
  5. SELF JOIN: 한 테이블 내에서 두 칼럼이 연관 관계가 있을 경우

집합 연산자

UNION, UNION ALL, INTERSECT, EXCEPT


PRIOR

  1. PRIOR 자식 = 부모: 부모 → 자식 방향으로 순방향 전개
  2. PRIOR 부모 = 자식: 자식 → 부모 방향으로 역방향 전개
  3. CONNECT BY, SELECT, WHERE 절 모두 사용 가능

Oracle 계층형 질의

  1. START WITH: 계층 구조의 시작점을 지정하는 구문
  2. ORDER SIBLINGS BY: 형제 노드 사이에서 정렬 수행
  3. 루트 노드의 LEVEL 값은 1

서브쿼리

  1. 종류
    • 단일 행(Single Row): =, <, ≤, >, ≥, <>
    • 다중 행(Multi Row): IN, ALL, ANY, SOME, EXISTS
    • 다중 컬럼(Multi Column): SQL Server에서 지원 X
  2. SELECT, FROM, HAVING, ORDER BY에서 사용 가능
  3. 연관 서브쿼리: 서브쿼리가 메인쿼리 컬럼을 포함하고 있는 형태
  4. 서브쿼리에서는 ORDER BY 사용 불가(메인쿼리 마지막 문장에 위치)
  5. 다중 행 서브쿼리 비교 연산자는 단일 행 서브쿼리의 비교 연산자로도 사용 가능
  6. 스칼라 서브쿼리: SELECT절에 사용, JOIN으로 동일한 결과 추출
  7. 동적 뷰(Dynamic View), 인라인 뷰(Inline View): FROM 절의 서브 쿼리
  • 비연관 서브쿼리: 주로 메인쿼리에 값을 제공하기 위한 목적으로 사용(연관 서브쿼리X)
  • 서브 쿼리는 항상 메인쿼리에서 읽혀진 데이터에 대해 서브쿼리에서 해당 조건이 만족하는지를 확인하는 방식으로 수행된다(X)
  • → 메인 쿼리의 결과가 서브쿼리로 제공될 수도 있고, 서브쿼리의 결과가 메인쿼리로 제공될 수도 있음(실행 순서는 상황에 따라 다름)

  1. 장점
    • 독립성: 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
    • 편리성
    • 보안성
  2. 단지 정의만 가지고 있으며, 실행 시점에 질의를 재작성하여 수행
  3. 실제 데이터를 저장하고 있는 뷰를 생성하는 기능을 지원하는 DBMS도 있음

ROLLUP / CUBE / GROUPING SETS

  1. 일반 그룹 함수를 사용하여 ROLLUP, CUBE, GROUPING SETS와 동일한 결과 추출 가능
  2. CUBE 그룹 함수는 인자로 주어진 컬럼의 결합 가능한 모든 조합에 대해 집계를 수행하므로 다른 그룹 함수에 비해 시스템에 대한 부하가 큼
  3. ROLLUP(A, B): A를 가지고 중간집계
  4. CUBE(A, B): A와 B 모두 중간집계
  5. GROUPING SETS: 그룹별로 처리된 여러개의 SELECT문을 하나로 합친 결과를 원할 때 사용
  6. GROUPING: 계산된 결과는 1, 그 외는 0 표

윈도우 함수

  1. Partition과 Group By 구문은 의미적으로 유사
  2. Partition 구문이 없으면 전체 집합을 하나의 Partition으로 정의한 것과 동일
  3. 윈도우 함수 적용 범위는 Partition을 넘을 수 없음
  • 윈도우 함수 처리로 인해 결과 건수가 줄어든다 (X)

RANK

  1. RANK() OVER - 공동 1등 다음 3위
  2. DENSE_RANK(): 동일한 순위를 하나의 건수로 취급 - 공동 1등 다음 2
  3. ROW_NUMBER: 동일한 값이라도 고유한 순위 부여

LAG / LEAD

  1. LAG: 이전 행
  2. LEAD: 이후 행
  3. SQL Server 지원 X

DCL

  1. ROLE: DBMS 관리자가 사용자별로 권한을 관리해야 하는 부담과 복잡함을 줄이기 위하여 다양한 권한을 그룹으로 묶어 관리할 수 있도록 사용자와 권한 사이에서 중개 역할을 수행
  2. WITH GRANT OPTION: 다른 유저에게 동일한 권한을 줌

PL/SQL

  1. 변수와 상수 등을 사용하여 일반 SQL 문장을 실행할 때 WHERE절의 조건 등으로 대입할 수 있음
  2. Procedure, User Defined Function, Trigger 객체를 PL/SQL로 작성할 수 있음
  3. Procedure 내부에 작성된 절차적 코드는 PL/SQL엔진이 처리하고 일반적인 SQL 문장은 SQL실행기가 처리
  4. Block 구조로 되어있어 각 기능별로 모듈화 가능
  5. IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 함
  6. DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용 가능
  7. Oracle에 내장되어 있으므로 Oracle과 PL/SQL 지원하는 어떤 서버로도 프로그램을 옮길 수 있음
  8. 응용 프로그램의 성능 향상
  9. 여러 SQL 문장을 Block으로 묶고 한 번에 서버로 보내기 때문에 통신량을 줄일 수 있음
  • PL/SQL로 작성된 Procedure, User Defined Function은 전체가 하나의 트랜잭션으로 처리되어야 한다(X)
  • execute immediate ‘TRUNCATE TABLE DEPT’
    • 모든 데이터를 ROLLBACK이 불가능 하도록 삭제
    • 동적 SQL 또는 DDL 실행 시

프로시저 / 트리거

프로시저 트리거

CREATE Procedure 문법사용 CREATE Trigger 문법 사용
EXECUTE 명령어로 실행 생성 후 자동으로 실행
COMMIT, ROLLBACK 실행 가능 COMMIT, ROLLBACK 실행 안됨

트리거

  • 데이터베이스에 의해서 자동으로 호출되고 수행
  • 특정 테이블에 대해 INSERT, UPDATE, DELETE 문이 수행되었을 때 호출되도록 정의
  • TCL 사용 불가
  • 데이터베이스에 로그인하는 작업에도 정의 가능

'++ > 자격증' 카테고리의 다른 글

[SQLD] 2과목 - SQL 기본 및 활용(1)  (0) 2023.11.17
[SQLD] 1과목 - 데이터 모델링의 이해  (0) 2023.11.11