[정보처리산업기사] 82강 SELECT - 2

DongHo Im·2022년 2월 1일
0

정보처리산업기사

목록 보기
82/86

1. 일반 형식

SELECT는 테이블에서 튜플을 검색

  • 표기방법
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, ...]
  FROM 테이블명[, 테이블명, ...][, WINDOW 함수 OVER (PARTITION BY 속성명1, ...
 ORDER BY 속성명2) [AS 별칭]]
[WHERE 조건]
[GROUP BY 속성명, 속섬영, ..]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
  • PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술

    • ALL : 모든 튜플 검색할 때 지정, 생략 가능
    • DISTINCT : 중복 튜플 존재 시 한개만 검색
    • DISTINCTROW : 중복 튜플 존재 시 한개만 제거하지만 튜플 전체를 대상으로 함
  • 속성명 : 검색하여 불러올 속성(열) 또는 속성을 이용한 수식을 지정

    • 기본 테이블을 구선하는 모든 속성을 불러올 때는 * 을 사용
    • AS : 속성 및 연산의 이름을 다른 제목으로 표기
  • FROM절 : 검색될 데이터들을 포함하는 테이블명 기술

  • WHERE절 : 검색할 조건을 기술

  • ORDER BY : 특정 속성을 기준으로 정렬하여 검색

    • ASC : 오름차순
    • DESC : 내림차순
  • WINDOW 함수 : GROUP BY 절을 이용하지 않고 속성의 값을 집계할 함수를 기술

    • PARTITION BY : WINDOW 함수가 적용될 범위로 사용할 속성을 지정
    • ORDER BY: PARTITION 안에서 정렬 기준으로 사용할 속성을 지정
    • ROW_NUMBER() : 각 레코드에 대한 일련번호 반환
    • RANK() : 순위를 반환하되 공동 순위를 반영
    • DENSE_RANK() : 순위를 반환하되 공동 순위를 반영하지 않음
  • GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 그룹 함수와 같이 사용

    • COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
    • SUM(속성명) : 그룹별 합계를 구하는 함수
    • AVG(속성명) : 그룹별 평균을 구하는 함수
    • MAX(속성명) : 그룹별 최대값을 구하는 함수
    • MIN(속성명) : 그룹별 최소값을 구하는 함수
    • ROLLUP(속성명, 속성명, ...) : 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수
    • CUBE(속성명, 속성명, ...) : 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구하는 함수
  • HAVING : GROUP BY와 함께 사용하여 그룹에 조건을 지정


2. WINDOW 함수 이용

GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계한다.

  • 테이블 형식

사원 테이블에서 부서 별로 경력에 대한 일련번호를 구하여 짬순이라는 이름을 붙이는 SQL

SELECT 부서, 경력
       ROW_NUMBER() OVER 
       (PARTITION BY 부서 ORDER BY 경력 DESC) AS 짬순
 FROM 사원;

3. 그룹 지정 검색

GROUP BY 절을 지정한 속성을 기준으로 그룹화하여 검색한다.

  • 테이블 형식

사원 테이블에서 부서별 경력의 평균을 구하는 SQL

SELECT 부서, AVG(경력) AS 평균
  FROM 사원
 GROUP BY 부서;
  • 집계함수

4. 집합 연산자를 이용한 통합 질의

집합 연산자를 사용하여 2개 이상의 테이블의 데이터를 하나로 통합한다.

SELECT 속성명1, 속성명2, ...
  FROM 테이블명
 UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
  FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];
  • UNION : 두 SELECT 문의 결과를 통합하고 중복된 행은 한 번만 출력(합집합)

  • UNION ALL : 두 SELECT 문의 결과를 통합하고 중복된 행도 그대로 출력(합집합)

  • INTERSECT : 두 SELECT 문의 결과 중 공통된 행만 출력(교집합)

  • EXCEPT : 첫번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과를 제외한 행을 출력 (차집합)

profile
[DATABASE] 비전공자 출신의 개발 도전!

0개의 댓글