SQLD 2과목 1장(SQL 기본) 정리

728x90

Contents

관계형 데이터베이스 개요

  1. 데이터베이스
    • DBMS(Database Management System)라고 호칭
    • 관계형 데이터 베이스 : 데이터 정합성 보장에 대한 고민의 결과물, 메타 데이터 총괄 관리 이점, 데이터 무결성(Integrity) 보장 등...
  1. SQL
    • SQL(Structured Query Language)
    • 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 위해 사용 언어
    • ANSI/ISO에 따라 표준 정의된 SQL 기능이 존재
    • SQL 문장의 종류 (DML, DDL, DCL, TCL)
  1. STANDARD SQL (기출문제 보고 더 많이 나올 것 같으면 추가 공부)
  1. 테이블
    • 데이터는 DB의 기본 단위인 테이블 형태로 저장
    • 어느 특정한 주제와 목적으로 만들어지는 일종의 집합
    • 테이블은 삭제하지 않는 한 지속적으로 유지
    • 테이블 관계 용어들

    5. ERD(Entity Relationship Diagram)

    • 팀 정보와 선수 정보간 관계가 존재하듯, 테이블도 다른 테이블과의 연관성과 관계를 가지고 있다.
    • ERD는 관계의 의미를 직관적으로 표현할 수 있는 수단이다.
    • 테이블 간 서로의 상관관계를 그림으로 도식화 한 것을 E-R 다이어그램이라고 한다.
    • ERD의 구송요소는 엔터티, 관계(Relation), 속성(Attribute) 3가지로 속한다.
    • K리그 기반 예시

  1. 데이터 유형
    • 데이터 유형은 DB 테이블에 특정 자료를 입력할 때, 자료를 받아들일 공간을 자료의 유형별로 나눈다.
    • 벤더마다 차이는 존재
  1. SELECT 문
    • DISTINCT 옵션
    • 애스터리스트(*) 사용 → 모든 칼럼 정보를 보고 싶을 경우 애스터리스크 사용
    • ALIAS 부여 → 칼럼명 바로 뒤에 칼럼명 as ALIAS 형태
    • 이중 인용부호(Double quotation)는 alias가 공백, 특수문자를 포함할 경우와 대소문자 구분이 필요할 때 사용
    • 공백이 들어갈 경우 " " 를 사용
  1. 산술 연산자와 합성 연산자
    • 산술연산자는 수학에서와 같이 우선 순위가 존재
    • 합성 연산자 → 문자와 문자를 연결하는 합성 연산자를 사용
  1. 내장함수
    • 내장함수는 벤더에서 제공 (사용자는 사용자 정의 함수(user defined function)으로 구분
    • 문자형 함수 → 문자형 함수는 문자 데이터를 매개 변수로 문자나 숫자 값의 결과를 돌려주는 함수
    • 숫자형 함수 → 숫자형 함수는 숫자 데이터를 입력받아 처리하고 숫자를 리턴한다.
  1. 날짜형 함수
    • 날짜형 함수는 DATE 타입의 값을 연산하는 함수다.
  1. 변환형 함수
    • 변환형 함수는 특정 데이터 타입을 다양한 형식으로 출력하고 싶을 때 사용.
    • 명시적(Explicit) 데이터 유형 변환
    • 암시적(Implicit) 데이터 유형 변환
  1. CASE 표현
    • CASE 표현은 IF-THEN-ELSE 논리와 유사한 방식으로 표현식을 작성해 SQL의 비교연산 기능을 보완하는 역할
  1. NULL 관련 함수
    • NVL/ISNULL 함수
    • NULL 값을 포함하는 연산은 결과도 NULL이다
    • 오라클은 NVL, SQL SERVER는 ISNULL 함수 사용
    • NULLIF → EXPR1이 EXPR2와 같으면 NULL 아니면 EXPR1을 리턴, 특정 값을 NULL로 대체하는 경우 사용 NULLIF (EXPR1, EXPR2)
    • COALESCE 함수는 인수의 숫자가 한정되어 있지 않으며, 임의의 개수 EXPR에서 NULL이 아닌 최초의 EXPR을 나타낸다
  1. WHERE 조건절 184p
    • 사용자가 자신이 원하는 자료만을 검색하기 위해 SQL 문장에 WHERE 문을 적용시켜 자료 제한
    • 연산자 종류
    • SQL 연산자 → SQL연산자는 기본적으로 사용 가능하도록 예약된 연산자
    • 논리 연산자 → 비교 연산자나 SQL 연산자들로 이뤄진 여러개의 조건을 논리적으로 연결시키기 위해 사용되는 연산자
    • 부정연산자 → 비교 연산자 SQL 연산잔에 대한 부정 표현을 부정 논리 연산자, 부정 SQL 연산자로 구분할 수 있다.
  1. GROUP BY, HAVING 절
    • 집계함수 → 여러행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수 중 하나 일반적으로 집계함수는 GROUP BY 와 함께 사용되지만 테이블 전체가 하나의 그룹이 되는 경우에는 GROUP BY 없이 사용 가능
    • GROUP BY, HAVING 절은 아래와 같은 특성을 가진다.
      • GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계함수를 사용
      • 집계함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행
      • GROUP BY 절에서는 SELCT와 달리 NULL 값 사용 불가
      • 집계함수는 WHERE에는 올 수 없음
      • WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거함
      • HABING 절은 GROUP BY 절의 기준이나 소그룹의 집계함수를 이용한 조건 표시 가능
      • GROUP BY 절에 의한 소그룹으로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력
      • HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치
    • CASE 표현을 활용한 월별 데이터 집계
      • 집계 함수(CASE()~ GROUP BY) 기능은 모델링의 제 1정규화로 인해 반복되는 칼럼의 경우 구분 칼럼을 두고, 여러개의 레코드로 만들어진 집합을 정해진 칼럼 수 만큼 확장해 집계 보고서를 만드는 유용한 기법.
    • 집계함수와 NULL 처리
      • 리포트 출력 때 NULL이 아닌 0을 표시하고 싶은 경우 NVL이나 ISNULL처럼 전체 SUM의 결과가 NULL인 경우에 사용
  1. ORDER BY 절
    • ORDER BY 절은 SQL 문장으로 조회한 데이터들을 다양한 목적에 맞게 특정 칼럼 기준 정렬
    • SELECT 문장 실행 순서도 위와 동일
  1. 조인
    • 2개 이상의 테이블들을 연결해서 테이블을 출력하는것을 join이라고 한다.
    • 일반적인 경우 행들은 PK와 FK 값의 연관에 의해 조인이 성립된다.
    • EQUI JOIN(등가 조인) → 2개의 테이블 간에 칼럼 값이 정확히 일치되는 경우 사용
    • Non EQUI Join → 2개의 테이블 간 논리적 연관관계는 있으나 칼럼 값들이 서로 일치하지 않는 경우 사용. 따라서 = 연산자가 아닌 >, <, =< 등을 사용하여 join 수행
    • 3개 이상 테이블 JOIN
    • OUTER JOIN → 앞서 다룬 JOIN은 모두 JOIN 조건의 결과가 참인 행만 반환하는 INNER JOIN에 해당된다. OUTERJOIN은 조인 조건을 만족하지 않는 행도 같이 반환할 때 사용한다.
  1. 표준 조인(246페이지)
    • FROM 절의 조인 형태는 아래와 같다.
      • INNER JOIN
      • NATURAL JOIN
      • USING 조건절
      • ON 조건절
      • CROSS JOIN
      • OUTER JOIN
    • INNER JOIN → 내부 JOIN이라 불리며 조인 조건을 만족하는 행들만 반환. 따라서 USING 조건 절이나 ON 조건절을 필수적으로 사용
    • NATURAL JOIN → 두 테이블간에 동일한 이름을 갖는 모든 칼럼에 대해 EQUI(=) JOIN을 실시
    • USING 조건절 → 같은 이름을 가진 컬럼들 중에 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN 사용
    • ON 조건절 → 조인 서술부(ON) 과 비 조인 서술부(WHERE)를 분리함
    • CROSS JOIN → 조인 조건이 없는 경우 생길 수 있는 데이터의 조합 확인
    • OUTER JOIN
      • LEFT OUTER JOIN → 좌측 테이블에 해당하는 데이터를 먼저 읽은 후 나중 우측 테이블에서 JOIN 대상 데이터 읽음
      • RIGHT OUTER JOIN → 우측 테이블이 기준이 돼 결과 생성
      • FULL OUTER JOIN → 좌우측 모든 데이터를 읽어 조인해서 결과 생성
    • INNER - OUTER - CROSS JOIN 비교
728x90