데이터베이스(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): 트랜잭션이 성공적으로 끝난 뒤에는, 그 결과가 데이터베이스에 계속 유지되어야 한다.