SQLD 요점 정리4 - SQL 활용(1)

개미는뚠뚠·2024년 1월 28일
0

자격증 준비

목록 보기
4/6
post-thumbnail

🌍SQL 활용(1)

1. 연산자

집합 연산자

  • 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 때 사용.
  • SELECT 절의 칼럼 수가 동일하고, SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환할 때 사용 가능

일반 집합 연산자

  1. UNION : 합집합(중복 행 1개로) 정렬
  2. UNION ALL : 합집합(중복 행도 표시) 정렬 X
  3. INTERSECT : 교집합(중복 행 1개로)
  4. MINUS : 차집합(중복 행 1개로)
  5. CROSS JOIN : 공집합(PRODUCT), ALIAS는 처음 테이블, 정렬은 마지막 테이블 기준

순수 관계 연산자

  1. SELECT -> WHERE절로 구현
  2. PROJECT -> SELECT절로 구현
  3. NATRUAL JOIN -> JOIN 다양한 으로 구현
  4. DIVIDE -> x 사용-

2. Join

FROM JOIN 절 형태

  1. INNER JOIN
  2. NATURAL JOIN
  3. USING 조건절
  4. ON 조건절
  5. CROSS JOIN
  6. OUTER JOIN

INNER JOIN
JOIN 조건에서 동일한 값이 있는 행만 반환 이나 , USING ON 절을 필수적으로 사용

NATURAL JOIN
두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI JOIN 수행, NATURAL JOIN 이 명시되면 추가로 USING, ON, WHERE 절에서 JOIN 조건을 정의할 수 없다.

ON 조건절
ON 조건절과 WHERE 조건절을 분리하여 이해가
쉬우며 칼럼명이 다르더라도 JOIN 조건을 사용할 수 있는 장점이 있다.

CROSS JOIN = 카티시안 곱
양쪽 집합의 M*N건의 데이터 조합이 발생한다.

OUTER JOIN (LEFT, RIGHT, FULL)
JOIN 조건에서 동일한 값이 없는 행도 반환 가능하다. USING 이나 ON 조건절 반드시 사용해야 함. SQL 식에서 (+) 안 붙은 쪽으로 JOIN 한다

LEFT OUTER JOIN
먼저 표기된 좌측 테이블에 해당하는 데이터를 읽은 후 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어 온다. 우측값에서 같은 값이 없는 경우 NULL 값으로 채운다.

RIGHT OUTER JOIN
LEFT OUTER JOIN의 반대

FULL OUTER JOIN
좌우측 테이블의 모든 데이터를 읽어 JOIN 하여 결과를 생성한다. 중복 데이터는 삭제한다.

3. 계층형 질의

개념

테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용

  • START WITH : 계층 구조 전개의 시작 위치 지정
  • CONNECT BY : 다음에 전개될 자식 데이터 지정
  • PRIOR : CONNECT BY 절에 사용되며, 현재 읽은 칼럼을 지정한다. PRIOR 자식 = 부모 형태를
    사용하면 계층구조에서 부모 데이터에서 자식 데이터 방향으로 전개하는 순방향 전개를 한다.
  • NOCYCLE : 동일한 데이터가 전개되지 않음
  • ORDER SIBLINGS BY : 형제 노드간의 정렬 수행
  • WHERE : 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만 추출한다.
  • CONNECT BY : 다음에 전개될 자식 데이터 지정
  • LEVEL : 루트 데이터이면 1, 그 하위 데이터면 2, 리프 데이터까지 1씩 증가
  • CONNECT_BY_ISLEAF : 해당 데이터가 리프데이터면 1, 그렇지 않으면 0
  • CONNECT_BY_ISCYCLE : 해당 데이터가 조상이면 1 아니면 0 (옵션 사용했을 시만 사용 가능)
  • SYS_CONNECT_BY_PATH : 루트 데이터부터 현재 전개할 데이터까지의 경로를 표시한다.
  • CONNECT_BY_ROOT : 현재 전개할 데이터의 루트 데이터를 표시한다.
  • SYS_CONNECT_BY_PATH : 루트 데이터부터 현재 전개할 데이터까지의 경로를 표시한다.
  • CONNECT_BY_ROOT : 현재 전개할 데이터의 루트 데이터를 표시한다. 단항 연산자이다.

4. 서브쿼리

개념

SQL 하나의 문안에 포함되어 있는 또다른 SQL문, 알려지지 않은 기준을 이용한 검색에 사용.

특징

  • 서브쿼리를 괄호로 감싸서 사용한다.
  • 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는
    서브쿼리의 결과가 반드시 1건 이하여야 하고, 복수행 비교 연산자는 결과 건수와 상관없다.
  • 서브쿼리에서는 ORDER BY를 사용하지 못한다.
  • SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT-VALUES, UPDATE-SET 절에 사용 가능

단일 행 비교 연산자 : =,<,>,<> 등
다중 행 비교 연산자 : IN, ALL, ANY, SOME 등
스칼라 서브쿼리 : 한 행, 한 칼럼만을 반환하는서브쿼리

동작 방식에 따른 서브쿼리 분류

  • 비연관 서브쿼리 : 서브쿼리가 메인쿼리 칼럼을 안가짐. 메인쿼리에 값 제공 목적
  • 연관 서브쿼리 : 서브쿼리가 메인쿼리 칼럼 가짐.

반환 데이터에 따른 서브쿼리 종류

  • 단일행 서브쿼리 : 실행결과 1건 이하
  • 다중행 서브쿼리 : 실행결과 여러 건
  • 다중컬럼 서브쿼리 : 실행결과 컬럼 여러 개

5. 뷰(view)

개념

  • 테이블은 실제로 데이터를 가지고 있는 반면, 뷰는 실제 데이터를 가지고 있지 않다.
  • 가상 테이블이라고도 함.
  • 실행 시점에 SQL 재작성하여 수행됨

뷰 사용 장점

  1. 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용 플그램은 변경하지 않아도 된다.
  2. 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다.
  3. 보안성 : 직원의 급여정보와 같이 숨기고 싶은 정보가 존재할 때 사용

생성/삭제

  • CREATE VIEW V_PLAYER_TEAM AS SELECT ...
  • DROP VIEW V_PLAYER_TEAM

0개의 댓글