SQL 활용 - 2

김상우·2022년 4월 9일
0
post-thumbnail

DML - SELECT

가장 많이 사용되는 명령문

  • 일반 형식
# 표기 형식
SELECT [PREDICATE] [테이블명.]속성명 [AS  별칭][, [테이블명.]속성명, ...] [그룹함수 (속성명) [AS 별칭]] [, WINDOW함수 OVER (PARTITION BY 속성명1, 속성명2, ... ORDER BY 속성명3, 속성명4, ...)] FROM 테이블명[, 테이블명, ...] [WHERE 조건] [GROUP BY 속성명, 속성명, ...] [HAVING 조건] [ORDER BY 속성명 [ASC | DESC]];
  • SELECT

    • PREDICATE : 검색할 튜플 수를 제한하는 명령어 기술

      • DISTICT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 표시
    • 속성명 : 검색을 통해 불러올 속성(열) 또는 속성을 이용한 수식 지정

    • AS : 속성이나 연산의ㅡ 이름을 다른 이름으로 표시하기 위해 사용

  • FROM : 검색할 데이터가 들어있는 테이블 이름을 기술

  • WHERE : 검색할 조건 기술

  • ORDER BY : 데이터를 정렬하여 검색할 때 사용

    • 속성명 : 정렬의 기준이 되는 속성명 기술
    • ASC : 오름차순 정렬
    • DESC : 내림차순 정렬
    • 생략 : 오름차순 정렬
  • 그룹함수 : GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 함수 기술

  • WINDOW 함수 : GROUP BY절을 이용하지 않고 속성의 값을 집계할 함수 기술

    • PARTITION BY : WINDOW 함수의 적용 범위가 될 속성 지정
    • ORDER BY : PARTITION 안에서 정렬 기준으로 사용할 속성 지정
  • GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용

  • HAVING : GROUP BY와 함께 사용되며, 그룹에 대한 조건 지정

  • 조건 연산자

    • 비교 연산자
    연산자=<>><>=<=
    의미같다같지 않다크다작다크거나 같다작거나 같다
    • 논리 연산자 : NOT, AND, OR
    • LIKE 연산자
    대표 문자%_#
    의미모든 문자를 대표함문자 하나를 대표함숫자 하나를 대표함
  • 기본 검색
    SELCET 절에 원하는 속성을 지정하여 검색

  • 조건 지정 검색
    WHERE 절에 조건을 저징하여 조건에 만족하는 튜플만 검색

  • 정렬 검색
    ORDER BY 절에 특정 속성을 지정해 지정된 속성으로 자료를 정렬 후 검색

  • 하위 질의
    조건절에 주어진 질의를 먼저 수행 후 그 검색 결과를 조거ㅏㄴ절의 피연산자로 사용

  • 복수 테이블 검색
    여러 테이블을 대상으로 검색 수행

  • 그룹 함수

함수기능
COUNT(속성명)그룹별 튜플 수를 구하는 함수
SUM(속성명)그룹별 합계를 구하는 함수
AVG(속성명)그룹별 평균을 구하는 함수
MAX(속성명)그룹별 최대값을 구하는 함수
MIN(속성명)그룹별 최소값을 구하는 함수
STDDEV(속성명)그룹별 표준편자를 구하는 함수
ROLLUP(속성명, 속성명,...)n개의 속성을 n+1레벨까지 하위레벨에서 상위레벨 순으로 데이터를 집계해 그룹별 소계를 구하는 함수
CUBE(속성명, 속성명, ...)n개의 속성을 2n2^n레벨까지 상위레벨에서 하위레벨 순으로 데이터를 집계해 모든 조합의 그룹별 소계를 구하는 함수
  • WINDOW 함수
    • ROW_NUMBER() : 윈도우별로 각 레코드에 대한 일련번호 반환
    • RANK() : 윈도우별로 순위를 반환하며, 공동 순위 반영
    • DENSE_RANK() : RANK()와 같지만 공동순위를 무시하고 순위를 부여
  • WINDOW 함수 이용 검색
    GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계
  • 그룹 지정 검색
    GROUP BY절에 지정한 속성을 기준으로 자료를 그룹화하여 검색
  • 집합 연산자를 이용한 통합 질의
    집합 연산자를 사용해 2개 이상의 테이블의 데이터를 하나로 통합
    # 표기 형식
    SELECT 속성명1, 속성명2, ... FROM 테이블명 UNION | UNION ALL | INTERSECT | EXCEPT SELECT 속성명1, 속성명2, ... FROM 테이블명 [ORDER BY 속성명 [ASC | DESC]];
    • UNION(합집합) : 두 SELECT문의 조회 결과를 통합 후 중복된 행은 한번만 출력하고 그 외는 모두 출력
    • UNION ALL(합집합) : UNION과 동일하지만 중복된 행도 그대로 출력
    • INTERSECT(교집합) : 두 SELECT문의 조회 결과 중 고옹된 행만 출력
    • EXCEPT(차집합) : 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력

DML - JOIN

연관된 튜플을 결합하여, 하나의 새로운 릴레이션 반환

  • INNER JOIN
    • EQUI JOIN
      공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방법
      # WHERE절을 이용한 표기 형식
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2, ... WHERE 테이블명1.속성명 = 테이블명2.속성명;
      # NATURAL JOIN절을 이용한 표기 형식
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 NATURAL JOIN 테이블명2;
      # JOIN~USING절을 이용한 표기 형식
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 JOIN 테이블명2 USING(속성명);
    • NON-EQUI JOIN
      '='조건이 아닌 나머지 비교 연산자를 사용하는 JOIN 방법
      # 표기 형식
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2, ... WHERE (NON-EQUI JOIN 조건);
  • OUTER JOIN
    JOIN 조건에 만족하지 않는 튜플도 출력하기 위한 JOIN 방법
    • LEFT OUTER JOIN
      INNER JOIN의 결과를 구한 후 좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여 결과에 추가
      # 표기 형식 1
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
      # 표기 형식 2
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명 = 테이블명2.속성명(+);
    • RIGHT OUTER JOIN
      INNER JOIN의 결과를 구한 후 우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여 결과에 추가
      # 표기 형식 1
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
      # 표기 형식 2
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명(+) = 테이블명2.속성명;
    • FULL OUTER JOIN
      LEFT 방법과 RIGHT 방법을 합친 것
      # 표기 형식
      SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 FULL OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;

데이터 사전

  • 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정보의 집합체
  • 데이터 사전 테이블
테이블명메타 데이터DBMS
TABLES테이블에 대한 정보My-SQL, Oracle
VIEWS뷰에 대한 정보My-SQL, Oracle
COLUMNS속성에 대한 정보My-SQL
TAB_COLUMNS속성에 대한 정보Oracle
TRIGGERS트리거에 대한 정보My-SQL, Oracle
  • My-SQL의 조회
    테이블들이 모여있는 INFORMATION SCHEMA로 이동 후 SHOW 명령으로 스키마 내의 테이블 목록을 확인
    # 표기 방식
    USE INFORMATION_SCHEMA;
    SHOW TABLES;
    SELECT * FROM [테이블];
    • USE INFORMATION_SCHEMA;

      • 'INFORMATION_SCHEMA'로 이동
    • SHOW TABLES;

      • 'INFORMATION_SCHEMA'에 저장된 데이터 사전 테이블들의 목록을 조회
      • 메타 데이터를 저장하고 있는 데이터 사전 테이블이 조회
    • SELECT * FROM [테이블];

      • 테이블에 있는 모든 속성 조회
  • Oracle의 조회
    '영역'을 지정하여 정보 조회
    # 표기 형식
    SELECT * FROM [영역]_[테이블];
    • SELECT * : 모든 속성 표시
    • FROM [영역][테이블] : <[영역][테이블]>에 해당하는 정보 조회
      • 영역 : DBA, ALL, USER 중 필요한 접근 권한 입력
      • 테이블 : 조회할 메타 데이터가 저장된 테이블 입력
profile
아침엔 운동하고 밤엔 잠을 잔다.

0개의 댓글