데이터베이스

최대한·2021년 10월 2일
0
post-thumbnail
post-custom-banner

데이터베이스(DataBase)란?

: 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터의 집합입니다.
데이터베이스는 서비스에 필요한 데이터를 저장 및 제공하는 '서버'입니다.
즉, 하나의 서버 프로그램이고 운영체제 위에서 동작합니다.

데이터베이스 관리 시스템 DBMS(DataBase Management System)

: 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합입니다. DBMS는 사용자 또는 프로그램의 요구에 적절한 응답으로 데이터를 사용할 수 있게 해줍니다.

파일시스템의 단점을 보완하고 대량의 데이터를 효율적으로 관리하고 운영하기 위해서 사용되기 시작됐습니다.

데이터베이스 모델

: DBMS가 지원하는 공식 언어로 기술된 데이터베이스의 구조나 형식. DBMS와 결합하는 데 쓰이는 데이터 모델의 응용

데이터베이스 모델 ∈ 데이터베이스

5가지 종류의 데이터베이스 모델

  • 계층형 모델(Hierarchical model): 데이터가 트리 형태의 구조로 조직된 것을 뜻함. 이 구조는 반복적인 부모-자식 관계 정보를 표현. (부모는 여러 자식을 가질 수 있고, 자식은 한 부모만 가질 수 있음.)
  • 네트워크형 모델(Network model): 각 레코드가 여러 부모와 자식 레코드를 가질 수 있게 함으로써 하나의 일반화된 그래프 구조를 이름.
  • 관계형 모델(relational model): 데이터는 이차원 테이블의 형태로 이루어져 있는데, 각 테이블끼리의 관계를 나타낸 모델
  • 객체-관계형 모델(Object-relational model)
  • 객체형 모델(Object model)

    현재 사용되는 대부분의 데이터베이스는 '관계형 모델'을 기반으로 함.

관계형 데이터베이스 관리 시스템(Relational DataBase Management System, RDBMS)

: IBM 산호세 연구소의 에드거 F.커드가 도입한 '관계형 모델'을 기반으로 하는 데이터베이스 관리 시스템.

SQL(Structured Query Language)

: 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 구축하고 관리하기 위해서 사용되는 특수 목적의 프로그래밍 언어.
SQL을 통해서 DBMS에서 정보들을 입력·관리·추출이 가능해집니다.

SQL 명령어 종류

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

  • CREATE: 데이터베이스 개체의 정의
  • DROP: 데이터베이스 개체 삭제
  • ALTER: 데이터베이스 개체 정의 변경

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

  • INSERT INTO: 행 데이터 또는 테이블 데이터의 삽입
  • UPDATE ~ SET: 표 업데이트
  • DELETE FROM: 테이블에서 특정 행 삭제
  • SELECT ~ FROM ~ WHERE: 테이블 데이터의 검색 결과 집합의 취득

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

  • GRANT: 특정 데이터베이스 사용자에게 특정 작업 수행 권한을 부여
  • REVOKE: 특정 데이터베이스 이용자로부터 이미 준 권한을 박탈
  • SET TRANSACTION: 트랜잭션 모드 설정
  • BEGIN: 트랜잭션 시작
  • COMMIT: 트랜잭션 실행
  • ROLLBACK: 트랜잭션 취소
  • SAVEPOINT: 무작위로 롤백 지점을 설정
  • LOCK: TABLE 등의 자원을 차지

SQL 명령어 실습

: 얼마전 학과 수업 시간에 MySQL을 살-짝 다뤄봐서 간단하게 SQL 명령어를 사용해보도록 하겠습니다.

명령어는 대소문자를 구분하지 않습니다!

DataBase 조회/생성하기

  • SHOW databases;
    : 전체 데이터베이스 조회
  • CREATE database sql_test;
    : sql_test 데이터베이스 생성

  • USE sql_test;
    : sql_test 데이터베이스를 사용하도록 지정
  • CREATE table users();
    : users 테이블 생성
    -num int(10) auto_increment primary key
    -user varchar(20) not null
    -password varchar(20) not null

    int: 정수형 double: 실수형 varchar: 문자형
    not null: 빈 값일 수 없음
    auto_increment: 숫자 자동 증가
    primary key: not null & unique한 값

  • desc users;
    : users 테이블 구조 확인

데이터 삽입/조회하기

  • INSERT INTO users (user, password) values ('xx', 'nn');
    : users 테이블의 user, password 칼럼에 데이터 삽입
  • SELECT * FROM users;
    : users 테이블의 모든 데이터를 조회

SELECT 구문 사용 방법

  • SELECT '칼럼' FROM '테이블' WHERE '조건식'
    : 테이블에서 조건식을 만족하는 데이터 중에서 필요한 칼럼을 조회
  • 예시) SELECT user,password from users where num=3;
    : users 테이블에서 num=3인 데이터 중에서 user, password 칼럼을 조회

트랜잭션(Transaction)

: 하나의 논리적 단위를 구성하는 데이터베이스 연산의 모임. 동시에 여러 트랜잭션이 수행되기 위해서는 데이터베이스의 일관성이 보장되어야 함. 이를 위해 동시성제어(concurrency control)와 회복 제어(recovery control)를 위한 모듈이 있으며 이 둘을 합쳐 트랜잭션 관리 모듈(transaction management module)이라 함.
트랜잭션은 다음에 더 자세히 알아보자...

데이터베이스 자료구조

데이터베이스는 ACID 규칙을 만족해야 함.

  • 원자성(Atomicity): 한 트랜잭션의 모든 작업이 수행되든지, 아니면 하나도 수행되지 않아야 한다. 트랜잭션이 제대로 실행되지 않았으면 ROLLBACK한다.
  • 일관성(Consistency): 모든 트랜잭션은 데이터베이스에서 정한 무결성 조건을 만족해야 함.
  • 격리성(Isolation): 두 개의 트랜잭션이 서로에게 영향을 미칠 수 없다.
  • 내구성(Durability): 트랜잭션이 성공적으로 끝난 뒤에는, 그 결과가 데이터베이스에 계속 유지되어야 한다.
profile
한국 사람입니다.
post-custom-banner

0개의 댓글