본문 바로가기
ETC/각종정보

[재무빅데이터분석사 2급] 데이터베이스 정리

by sssinga 2023. 6. 2.

목차

     

     

     

     

     

    1. 데이터베이스 개요

    데이터베이스

    • 원시 데이터(Raw Data)와 데이터베이스 관리시스템(DBMS: 데이터베이스로의 접근을 관리하고 통제하는 소프트웨어)의 집합체
    • 통합된 기록의 자기 설명 집합체(self-describing collection of integrated records)
    • 메타데이터 (데이터에 대한 데이터)

     

    데이터베이스 매니지먼트 시스템(DBMS)

    • 사용자, 데이터베이스 응용 프로그램, 데이터베이스 간 상호 작용하는 소프트웨어(프로그램)
    • 파일을 이용해서 여러 명이 데이터를 저장하는 경우 데이터 종속성, 중복성 문제가 발생할 수 있다.
    • 데이터의 일관성, 무결성을 유지
    • MS aCCESS, MS SQL, MySQL, Oracle 등

     

     

     

     

     

    2. 관계형 데이터베이스

    • 목적: 높은 수준의 데이터 독립성 / 데이터 의미론, 일관성 및 중복 문제를 다루는 실질적인 토대
    • 데이터 모델의 세가지 구성 요소: 구조 부문, 조작 부문, 무결성 원칙
    • 관계형 데이터베이스 모델의 주요 구성요소
    관계(relation) 2차원의 테이블 (행과 열로 구성)
    속성(attributes) 관계에서 이름을 가진 하나의 열(column) 또는 필드(field)
    튜플(tuple) 관계에서 각 행(row) 또는 레코드(record)
    • 널(Null) : 값이 특정 레코드에 적용되지 않거나, 아직 제공되지 않았음
    • 차수(degree) : 열의 수
    • 카디날리티(cardinality) : 행의 수

     

    관계형 테이블의 특성

    • 다른 모든 테이블과 구분되는 이름을 가진다.
    • 테이블의 각 셀은 정확하게 하나의 value를 가진다.
    • 각 필드(컬럼)는 구분되는 이름을 가진다.
    • 필드(컬럼)의 순서는 중요하지 않다.
    • 중복되는 레코드는 없어야 한다.
    • 레코드의 순서는 이론적으로는 중요하지 않다. 그러나 실무적으로 그 순서는 레코드에 접근하는 효율성에 영향을 미칠 수 있다.

     

    관계형 키

    • 레코드를 유일하게 식별해 낼 수 있는 식별자
    • 일반적으로 하나의 플드를 키로 지정하나, 여러개의 필드로 구성 가능
    • 두 개 이상의 필드로 구성된 키를 복합키(composite key)라고 한다.
    수퍼 키 (super key) 테이블안의 레코드를 유일하게(중복X) 식별해주는 속성(컬럼, 필드)
    후보 키 (candidate key) 슈퍼 키 중 더 이상 줄일 수 없는(irreducible) 형태
    기본 키 (primary key) 레코드(튜플)를 유일하게 구분할 수 있는 속성으로 null이 아니고 유일하여야 한다.
    대체 키 (alternate key) 후보 키가 여러개일때 기본 키를 제외한 나머지 후보 키 (보조 키, 인덱스)
    외래 키 (foreign key) 테이블 A, B가 관계 있는 경우, B가 참조하는 A의 기본 키를 나타내는 A의 속성

     

    키(key)들의 포함 관계

     

    관계의 무결성 (Relational integrity)

     : 데이터의 정확성 또는 유효성을 의미하는 것으로, 이를 갖추기 위한 제약조건

    도메인 제약조건 속성 값의 기본 값 또는 가능한 값들의 범위 지정. 데이터 형식(type)을 통해 값들의 유형 제한
    키 제약조건 키 컬럼(필드)에 중복된 값이 존재해서는 안된다.
    기본키와 무결성 테이블의 기본 키를 구성하는 어떤 컬럼도 null 값을 가질 수 없다.
    외래키와 무결성 테이블 B의 외래 키가 테이블 A의 기본 키를 참조할 때, 아래 두 조건 중 하나가 성립되면 참조 무결성 제약조건 만족
      - 외래 키의 값은 A의 어떤 레코드의 기본키 값과 같다.
      - 외래 키가 자신을 포함하고 있는 테이블의 기본 키를 구성하고 있지 않으면 null 값을 가진다.
    삽입 참조되는 테이블에 새로운 레코드가 삽입되는 그 자체는 참조 무결성 제약조건을 위배하지 않는다.
    다만 새로 삽입되는 레코드의 기본 키 어트리뷰트 값에 따라서 도메인, 키 제약조건을 위배할 수 있다.
    삭제 참조되는 테이블에 새로운 레코드가 삭제되는 그 자체는 참조 무결성 제약조건을 위배하지 않는다.
    다만 레코드가 삭제되면 참조 무결성 제약조건을 위배하는 경우가 생길 수 있다.
    • 제한(restricted): 참조 무결성 제약조건을 위배한 연산을 거절하는 것
    • 연쇄(cascade): 참조되는 테이블에서 레코드를 삭제하고, 참조하는 테이블에서도 레코드를 함께 삭제

     

     

     

     

     

    3. SQL (Structured Query Language)

    데이터 조작 언어

    •  SQL은 구조적 질의 언어. 관계형 테이블과 데이터베이스 테이블에서 검색, 갱신 등을 하는데 사용되는 표준언어
    •  다양한 DBMS에서 여러 가지 버전 존재
    •  Oracle 기준 SQL 쿼리 실행 테스트 웹사이트: http://sqlfiddle.com/ 
     

    SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.

    Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generated after each run.

    sqlfiddle.com

     

    SQL의 종류 - DDL, DML, DCL

    데이터 정의어 (DDL: Data Definition Language)

     : 테이블 등의 데이터 구조를 정의하는데 사용되는 명령어

    Create 테이블 생성
    ALTER 테이블 변경
    DROP 테이블 삭제
    RENAME 테이블명 변경

    데이터 조작어 (DML: Data Manipulation Language)

     : 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용하는 문장. SELECT문은 특별히 질의어(Query)라고 한다.

    SELECT 테이블에서 조건에 맞는 레코드 검색
    INSERT 테이블에서 새로운 레코드 삽입
    DELETE 테이블에서 조건에 맞는 레코드 삭제
    UPDATE 테이블에서 조건에 맞는 레코드의 내용 변경

    데이터 제어어 (DCL: Data Control Language)

     : 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어

    COMMIT 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터베이스 조작 작업이 정상적으로 완료됨을 관리자에게 알려줌
    ROLLBACK 데이터베이스 조작 작업이 비정상 종료 시, 원래 상태로 복구
    GRANT 데이터베이스 사용자에게 사용권한 부여
    REVOKE 데이터베이스 사용자의 사용권한 회수

     

    SQL 사례

     테이블 생성

    CREATE TABLE 테이블명(
        컬럼명1 데이터타입 [디폴트 형식],
        컬럼명2 데이터타입 [디폴트 형식],
        
        CONSTRAINT 기본키 인덱스명 PRIMARY KEY (기본키 컬럼명),
        CONSTRAINT 외래키 인덱스명 FOREIGN KEY (외래키 컬럼명) REFERENCES 참조테이블명 (기본키 컬럼명)
    );
    • 테이블 명은 다른 테이블의 이름과 중복x
    • 한 테이블 내에서 컬럼명 중복X
    • 각 컬럼들 콤마(,)로 구분, 테이블 생성문의 끝은 항상 세미콜론(;)으로 끝
    • 컬럼 뒤에 데이터 타입 지정 필수
    • 테이블명과 컬럼명은 반드시 문자로 시작, 길이 한계O
    • 컬럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가 가능

     

     제약조건

     : 사용자가 원하는 조건의 데이터만 유지하기 위해 특정 컬럼에 설정하는 제약

    PRIMARY KEY
    (기본키)
    - 테이블에 저장된 레코드를 고유하게 식별하기 위한 기본키 정의
    - 하나의 테이블에 하나의 기본키 제약만 정의 가능
    - 기본키 제약을 정의하면 DBMS는 자동으로 UNIQUE 인덱스를 생성
    기본키를 구성하는 컬럼에는 NULL 입력 불가
    FOREIGN KEY
    (외래키)
    - 관계형 데이터베이스 테이블 간의 관계 정의를 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 생성
    - 외래키 지정시 참조 무결성 제약 옵션 선택 가능
    NOT NULL - NULL 값 입력 금지
    - 디폴트 상태에서는 모든 컬럼에서 NULL 허가하나, 이 제약을 지정함으로써 해당 컬럼은 입력 필수 됨
    CHECK - 입력할 수 있는 값의 범위 제한

     

    테이블 컬럼 추가

    ALTER TABLE 테이블명
    ADD 추가할컬럼명 데이터타입;

     

    테이블 컬럼 삭제

    ALTER TABLE 테이블명
    DROP 삭제할 컬럼명 [CASCADE 또는 RESTRICT 또는 SET NULL];

    다른 개체가 삭제할 개체를 참조하고 있는 경우
     - CASCADE: 함께 삭제
     - RESTRICT: 삭제 안됨
     - SET NULL: 참조하고 있는 값을 NULL로 변경

     

    테이블명 변경

    ALTER TABLE 기존테이블명
    RENAME TO 변경테이블명;

     

     

    SELECT 문

    기본 형식 SELECT 컬럼명 또는 표현식
       FROM 테이블명;
    모든 컬럼 조회 SELECT *
       FROM 테이블명;
    원하는 컬럼만 조회 SELECT 컬럼명
       FROM 테이블명;
    원하는 조건만 조회 SELECT 컬럼명
       FROM 테이블명
     WHERE 조건;
    중복된 값을 제거하고 조회 SELECT DISTINCT 컬럼명
       FROM 테이블명;

     

    INSERT 문

    INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ..., 컬럼명 n)
    VALUES (값1, 값2, ..., 값n);

     

    JOIN 문

     : 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법

     

      - INNER JOIN

     : 교집합으로, 기준이 되는 테이블과 JOIN한 테이블의 중복된 값을 보여준다.

    SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2
    FROM 기준 테이블명
    INNER JOIN 조인할 테이블명
    ON 기준 테이블명.기준키 = 조인할 테이블명.기준키;

     

     - LEFT OUTER JOIN

     : (A테이블의 모든 데이터)와 (A테이블과 B테이블의 중복값)을 보여준다.

    SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2
    FROM 기준 테이블명
    LEFT OUTER JOIN 조인할 테이블명
    ON 기준 테이블명.기준키 = 조인할 테이블명.기준키;

     

     - RIGHT OUTER JOIN

     : (B테이블의 모든 데이터)와 (A테이블과 B테이블의 중복값)을 보여준다.

    SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2
    FROM 기준 테이블명
    RIGHT OUTER JOIN 조인할 테이블명
    ON 기준 테이블명.기준키 = 조인할 테이블명.기준키;

     

    연산자

    비교
    연산자
    = 같다
    > 크다
    >= 크거나 같다
    < 작다
    SQL
    연산자
    BETWEEN A AND B A와 B의 값 사이에 있다 (A와 B값 포함)
    IN(LIST) LIST 중 어느 하나라도 일치하면 된다
    LIKE '비교문자열' 비교문자열 형태가 일치하면 된다 (% 사용)
    IS NULL NULL 값의 경우
    논리
    연산자
    AND 앞의 조건과 뒤의 조건을 동시에 만족해야 한다
    OR 앞의 조건 또는 뒤의 조건 중 하나만 만족하면 된다
    NOT 뒤에 오는 조건에 반대되는 결과를 되돌려 준다
    부정비교
    연산자
    != 같지 않다
    ^= 같지 않다
    <> 같지 않다
    NOT 컬럼명 =  ~와 같지 않다
    NOT 컬럼명 > ~보다 크지 않다

     

     

     

     

    KICPA ALLDEMY (https://kicpa-alldemy.com/)의 재무빅데이터분석사2급 데이터베이스 강의를 학습하고 개인 학습용으로 정리한 글입니다.

    댓글