SQLD 정리 - 1

Jihun Kim·2022년 8월 9일
0

SQL

목록 보기
2/2

WITH 구문

  • 서브 쿼리를 사용해 임시 테이블이나 뷰처럼 사용 가능하다.
  • 별칭을 지정할 수 있다.
  • DB는 WITH 구문을 인라인 뷰나 임시 테이블로 여긴다.
WITH TableName AS (
	SELECT *
    FROM C_INFO
    WHERE NAME LIKE '%a%'
)

서브쿼리

SELECT문 내에 SELECT 문이 또 쓰인 쿼리

인라인 뷰

서브 쿼리가 FROM 절 내에 쓰인 쿼리

SELECT *
FROM (SELECT * FROM C_INFO WHERE name LIKE '%A%');

뷰 테이블

일종의 가상 테이블로, 실제 데이터가 하드웨어에 저장 되지는 않으며 실제 데이터를 갖고 있지도 않다. 또한, 테이블의 구조가 변경되어도 독립적으로 존재한다.

  • 사용상의 편의를 위해 사용한다.
  • 수행 속도의 향상을 위해 사용한다.
    - 임시 저장을 미리 해 놓고 수행 속도를 향상 시킨다.
  • SQL 성능 향상을 위해 사용한다.
  • 임시 작업을 위해 사용한다.
  • 보안 관리를 위해 사용한다.


ROWID

  • INSERT를 하면 DB 상에는 보이지 않는 ROWID가 생성 된다.
  • 해당 데이터가 어떤 데이터 파일 상에서 어느 블록에 저장되어 있는지 알려준다.
  • ROWID의 번호는 데이터 블록에 데이터가 저장된 순서이다.
  • 테이블에 데이터를 입력하면 자동 생성 된다.
  • 데이터베이스에 저장되어 있는, 데이터를 구분할 수 있는 유일한 값이다.


Group 함수

ROLLUP

  • 부분 합계와 전체 합계 값을 보여준다.
  • 인수의 순서에 영향을 받는다.
    - 앞의 인수만 집계 결과를 리턴한다.
  • 아래와 같이 성별과 연령대에 대해 rollup 함수를 실행해 group by를 하면 성별 - 연령대 가능한 케이스들에 대해 sum 집계를 하고 마지막 행에 성별에 대한 전체 합을 리턴한다.
    - 즉, 성별 x 연령 별 합계 & 성별 별 합계 & 전체 합계를 리턴한다.
SELECT 성별, 연령, SUM(성별, 연령대)
FROM 결제
GROUP BY ROLLUP(성별, 연령대)
ORDER BY 성별, 연령;


CUBE

  • 그룹화 될 수 있는 모든 경우에 대해 집계 한다.
    - 즉, 성별 x 연령 별 합계 & 성별 별 합계 & 연령 별 합계 & 전체 합계를 리턴한다.
SELECT 성별, 연령, SUM(성별, 연령대)
FROM 결제
GROUP BY CUBE(성별, 연령대)


GROUPING SETS

  • 괄호 묶은 집합 별로 집계 가능하다.

<
성별, 거주지 >

SELECT 성별, 연령, SUM(성별, 연령대)
FROM 결제
GROUP BY GROUPING SETS(성별, 연령대)

<(성별, 연령대), 거주지 >

SELECT 성별, 연령, SUM(성별, 연령대)
FROM 결제
GROUP BY GROUPING SETS((성별, 연령대), 거주지)



쿼리가 실행되는 순서

from -> group by -> select -> order by

profile
쿄쿄

0개의 댓글