데이터베이스 1 - 개념, 특징, SQL, 조인, 부속질의, 인덱스, 저장프로그램 ...

출처 도서 - MySQL로 배우는 데이터베이스 이론과 실습

  • 데이터베이스
    • 데이터의 집합.
    • 데이터 표준화를 통해 중복제거 등 데이터 무결성을 유지한다.
    • 동시성 제어를 통해 데이터 일관성을 유지한다.
    • 대용량 데이터 속에서 데이터 호출과 갱신의 효율성을 높인다.
    • 하드디스크에 존재하며, 인덱스/데이터 사전 등으로 구성되어 있다.

 

  • DBMS(데이터베이스 관리 시스템)
    • 데이터 정의, 구조, 값을 관리한다 <- 설계 과정
    • 데이터는 DB에서, 데이터 구조는 DBMS에서 분리하여 관리하여 서로의 변화에 영향을 받지 않음
      -> 데이터 독립성
    • 데이터베이스를 관리하는 소프트웨어로 주기억장치에 상주 -> cpu, 메모리 소모
    • SQL 컴파일러, 트랜잭션/파일/버퍼 관리자 등으로 구성되어있다.

 

  • SQL(구조적 질의 언어)
    • DDL : CREATE, ALTER, DROP
    • DML : SELECT, INSERT, DELETE, UPDATE
    • DCL : GRANT, REVOKE

 

  • 데이터 모델
    • 객체 관계 데이터 모델 : 객체 속성값(테이블 pk) 사용

 

  • 테이블 속성 특징
    • 원자성 : 단일값을 가진다.
      -> 취미라는 속성이 있다면, [독서, 운동] 값이 들어갈 수 있다.
      -> 두 가지 값을 넣고 싶다면, 취미1/취미2로 속성을 추가 및 분리해야한다.
    • 도메인 값(타입)은 일정해야하며, 속성값의 이름은 중복되지 않아야한다 -> 데이터 표준화 및 일관성 확보
    • 중복된 튜플은 존재하지 않는다. -> 보통은 auto increment int id를 pk로 구분시킴
    • 기본키(primary key) : 튜플을 식별할 수 있는 후보키 중 선정된 대표키
    • 외래키(foreign key) : 두 테이블을 연결하는 키;
      일대일관계에서는 주인(자주 사용하는 테이블)의 외래키에 주인이 아닌 테이블의 pk가 추가됨 
      일대다관계에서는 부모의 pk가 자식(주인)의 외래키에 추가됨
      • 참조 무결성 제약조건 : restricted, cascade(같이 삭제), default, null
        JPA에서는 생성 시에도 cascade 옵션을 통해 자식 테이블을 같이 생성 가능(save 메서드 없이도)

 

  • 기본 SQL
    select
    from
        from - inner join - on
        from - left join / right join - on
        from - full join
    where (between, in, like 와일드문자, and ...)
    group by - having
    order by 속성값 desc/asc

    • 집계함수
      SUM, AVG, MIN, MAX, COUNT

    • group by - having 사용 시 주의사항
      select 시 group by에서 사용한 속성값과 집계함수만 출력가능
      having 조건절에는 집계함수만 사용가능하다 - where 조건절과 구분하기

 

  • 조인
    • 일반조인
      from 테이블 나열 + where 조건절
      join + on
    • 외부조인 outer join

 

  • 부속질의
    대량데이터가 있을 경우, 모든 데이터를 합쳐서 연산하는 조인보다 성능이 좋음
    select, from, where 절에 추가적인 SQL문 추가
    exists 조건 사용하면 유용

 

  • 내장함수
    ABS, CONCAT, LPAD(대체), SUBSTR, LENGTH, IFNULL
    ADDDATE, DATE, DATEDIFF, DATE_FORMAT, STR_TO_DATE ...

 


  • 가상의 테이블; 기존의 테이블들을 가공하여 필요한 정보들만 출력
    CREATE VIEW 뷰이름 AS SELECT 문

 

  • 인덱스
    하드디스크에서 데이터를 읽어오는 것은 액세스 시간이 소요되며
    이러한 연산속도를 개선하기 위해 인덱스를 활용
    인덱스를 중심으로 정렬하여 인덱스에 포함된 컬럼을 조건을 사용하여
    대용량 데이터 속에서 소량의 데이터를 호출할 때 빠르게 조회할 수 있음

 

  • 저장 프로그램
    1. 프로시저
    • 프로시저 생성
      CREATE PROCEDURE <이름>(<변수이름> <변수타입>, ...)
      BEGIN 
      SET @<변수> = 0;
      DECLARE <변수이름> <변수타입>;
      ...
      END
    • 명령문
      DELIMITER
      IF THEN - ELSE - END IF
      LOOP | WHILE | REPEAT
      RETURN
    • 프로시저 호출
      CALL <프로시저 이름>();

2. 함수
프로시저는 CALL 명령어로 실행되는 프로그램이고, 함수는 Select문에 호출되어 값을 반환하는 용도로 사용
CREATE FUNCTION <함수이름>(<변수이름> <변수타입>) RETURN INT
BEGIN
...
END

3. 트리거
CREATE TRIGGER ...
INSERT DELETE UPDATE문과 함께 실행

 

 

댓글을 작성해보세요.