반응형

# SQLD 2과목_3 SQL 활용

## 순수 관계 연산자

  • SELECT, PROJECT, JOIN, DIVIDE

 

## CROSS JOIN

  • 일반집합 연산자의 PRODUCT 개념, 테이블 간 조인 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말하며, 결과는 양쪽 집합의 M * N건의 데이터 조합이 발생한다.

 

## FULL OUTER JOIN

  • 조인 수행시 좌축, 우측 테이블의 모든 데이터를 읽어 조인하여 결과 생성
  • LEFT OUTER JOIN 과 RIGHT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일하다.

 

## LEFT (OUTER) JOIN

  • 좌측 테이블 기준으로 결과 생성

 

## SELF JOIN

  • 한 테이블 내에서 두개의 칼럼이 연관 관계가 있을 때 수행한다.
  • 동일 테이블 사이의 조인
  • FROM절에 동일한 테이블이 두번 이상 나타난다.
  • 테이블과 칼럼 이름이 모두 동일하기 때문에 반드시 별칭을 지정해야 한다.

 

## 집합 연산자의 종류

  1. UNION : 여러 개의 SQL문 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다. (합집합)
  2. UNION ALL : 여러 개의 SQL문 결과에 대한 합집합으로 중복된 행 그대로 결과로 표시 (단순히 결과만 합쳐놓은 것), 개별 SQL문의 결과가 서로 중복되지 않은 경우 UNION과 결과가 동일함
  3. INTERSECT : 여러 개의 SQL문의 결과에 대한 교집합, 중복된 행은 하나의 행으로 만든다. (교집합)
  4. EXCEPT : 앞의 SQL문의 결과에서 뒤의 SQL문의 결과에 대한 차집합, 중복된 행은 하나의 행으로 만든다. (=MINUS) (차집합)

 

## ORDER BY 1, 2;

  • 테이블의 1, 2번째 컬럼 기준으로 정렬

 

## 일반 집합 연산자와 SQL 비교

  • UNION 연산은 UNION 기능으로 구현되었다.
  • INTERSECTION 연산은 INTERSECTION 기능으로 구현되었다.
  • DIFFERENCE 연산은 EXCEPT(MINUS) 기능으로 구현되었다.
  • PRODUCT 연산은 CROSS JOIN 기능으로 구현되었다.

 

## 오라클 계층형 질의

  • START WITH절은 계층 구조 전개의 시작위치를 지정하는 구문으로 루트 데이터를 지정함
  • ORDER SIBLINGS BY절은 형제 노드 사이에서 정렬을 수행
  • 루트 노드의 LEVEL 값은 1이다.
  • 순방향전개란 부모 노드로부터 자식 노드 방향으로 전개하는 것을 의미

 

## PRIOR 키워드는 SELECT, WHERE 절에서도 사용 가능하다.

 

## 서브쿼리

  • 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용할 수 있다.
  • 서브쿼리는 SELECT, FROM, HAVING, ORDER BY절 등에서 사용 가능하다.
  • 서브쿼리의 결과가 복수 행 결과를 반환하는 경우에는 IN, ALL, ANY 등 복수 행 비교 연산자와 사용해야 한다.
  • 다중 칼럼 서브쿼리는 서브쿼리의 결과로 여러 개의 칼럼이 반환되어 메인 쿼리의 조건과 비교되는데 SQL SERVER에서는 지원하지 않는다.
  • 연관 서브쿼리는 서브쿼리가 메인쿼리 컬럼을 포함하고 있는 형태의 서브쿼리이다.
  • 다중 행 서브쿼리 비교 연산자는 단일 행 서브쿼리의 비교 연산자로도 사용 가능하다. (반대는 불가)

 

## 뷰

  • 뷰는 단지 정의만을 갖고 있으며 실행 시점에 질의를 재작성하여 수행한다.
  • 뷰는 보안을 강화하기 위한 목적으로 활용할 수 있다.
  • 실제 데이터를 저장하고 있는 뷰를 생성하는 기능을 지원하는 DBMS도 있다.
  • 뷰의 장점중 독립성은 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.

 

## 뷰 사용의 장점

  1. 독립성 : 테이블 구조 변경되어도 뷰 사용하는 응용 프로그램은 변경하지 않아도 됨
  2. 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있고, 해당 형태의 SQL 문을 자주 사용할 때 뷰를 이용하면 편리하게 사용 가능함
  3. 보안성 : 숨기고 싶은 정보가 존재하면 뷰를 생성할 때 해당 컬럼을 빼고 생성하여 정보를 감출 수 있다.

 

## ROLLUP

  • 집계, 계층구조, 나열된 컬럼에 대해 계층구조로 집계를 출력한다.

## CUBE

  • 나열된 모든 인수의 결합 가능한 집계가 출력

## GROUPING SETS

  • 다양한 소계 집합을 만들수 있는데, GROUPING SETS에 표시된 인수들에 대한 개별 집계를 구할 수 있고, 인수의 순서가 바뀌어도 결과는 같다. 결과에 대한 정렬이 필요한 경우 ORDER BY 절에 명시적으로 정렬 칼럼이 표시되어야 함

 

## 윈도우 함수

  • Partition과 Group By 구문은 의미적으로 유사함
  • Partition 구문이 없으면 전체 집합을 하나의 Partition으로 정의한 것과 동일하다.
  • 윈도우 함수 적용 범위는 Partition을 넘을 수 없다.
  • 윈도우 함수는 결과에 대한 함수처리이기 때문에 결과 건수는 줄지 않는다.

 

## ROLE 관련

  • ROLE을 DBMS USER에게 부여하기 위해서는 GRANT 명령을 사용하며, ROLE을 회수하기 위해서는 REVOKE 명령을 사용한다.
  • GRANT 권한명 ON 테이블명 TO 유저명;

 

## ROLE

  • 다양한 권한을 그룹으로 묶어 관리할 수 있도록 사용자와 권한 사이에서 중개 역할을 수행하는 ROLE을 제공한다.

 

## TRIGGER

  • 트리거는 데이터베이스에 의해 자동으로 호출되고 수행된다.
  • 트리거는 특정 테이블에 대해 INSERT, UPDATE, DELETE 문이 수행되었을 때 호출되도록 정의할 수 있다.
  • 트리거는 데이터베이스에 로그인하는 작업에도 정의할 수 있다.
  • 트리거는 프로시저와 달리 커밋, 롤백 등 TCL을 사용할 수 없다.
반응형

+ Recent posts