데이터베이스란
데이터들을 저장하고 조회하는 프로그램, 데이터의 집합
데이터베이스의 데이터 특징
데이터베이스는 구조적인 형태를 유지하기 위해 효율적인 데이터 저장 규칙이 존재한다.
통합된 데이터
- 여러가지의 데이터를 통합하여 저장하는데 중복된 정보를 그대로 저장하면 용량 낭비가 발생한다.
- 데이터베이스는 이러한 중복된 정보에 대해서 데이터를 통합하여 자료의 중복을 최소화한 데이터의 모임으로 구성한다.
저장된 데이터
- 데이터베이스는 컴퓨터가 접근할 수 있는 데이터를 저장한다.
운영 데이터
- 데이터베이스는 주로 조직의 목적을 위해 존재하고 활용되는 운영 데이터를 다루는데 주로 이용된다.
- ex) 쇼핑몰의 경우 판매량이나 재고량 등이 운영데이터에 속함
공유 데이터
- 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터를 말한다.
- 하나의 컴퓨터나 시스템을 위한 데이터가 아니라 여러 시스템들이 공용으로 엑세스하여 이용한다.
데이터베이스의 기능 특징
데이터베이스는 이러한 특징을 가진 데이터들을 효과적으로 관리하기위해 기능 몇가지를 제공한다.
실시간 접근성
데이터베이스는 사용자의 요구에 신속하고 정확하게 응답이 가능해야 한다.
계속적인 변화
현실 세계의 변화를 반영하기 위해 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)으로 항상 최신의 데이터를 유지하는 것을 말한다.
동시 공용
다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
내용에 의한 참조
데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터의 위치나 주소로 데이터를 찾는다.
데이터베이스의 언어 종류
데이터베이스와 소통하기 위해 사용하는 언어를 데이터베이스 언어라고 한다. 그 중에서 가장 많이 사용되는 언어는 SQL이다.
SQL
- 관계형 데이터베이스에서 데이터를 정의하고 조작하고 제어할 수 있는 표준 언어로, 대부분의 데이터베이스 시스템에서 지원한다.
- 데이터베이스 언어는 크게 DDL, DML, DCL, TCL로 나뉜다.
DML(Data Manipulation Language)
DML은 데이터 조작 언어, 즉 데이터를 조작하는 작업을 수행하는 SQL 명령어이다.
- 명령어
- SELECT(읽기)
- INSERT(쓰기)
- UPDATE(쓰기)
- DELETE(쓰기)
- MERGE(쓰기)
DCL(Data Control Language)
DCL은 데이터 제어 언어로 사용자를 생성하고 권한을 부여하는 작업을 수행하는 SQL 명령어이다.
DDL(Data Definition Language)
DDL은 데이터 정의 언어로 데이터의 구조, 즉 스키마를 정의하고 이를 관리하는 SQL 명령어이다.
- 명령어
- CREATE
- ALTER
- DROP
- RENAME
- TRUNCATE
TCL(Transaction Control Language)
TCL은 트랜잭션 제어 언어, 즉 트랜잭션을 제어하는 SQL 명령어이다.
- 명령어
- COMMIT
- ROLLBACK
- SAVEPOINT
DBMS
Database Management System 단어 뜻 그대로 데이터베이스를 관리하는 소프트웨어이다.
HDBMS
- 최초의 DBMS로, 데이터를 트리 구조로 표현하는 방식이다.
- HDBMS는 데이터 접근 속도가 빠르고 단순한 구조를 가지는 장점이 있지만, 데이터의 중복이 많고 구조 변경이 어렵고 관계 표현이 제한적인 단점이 있다.

NDBMS
- 데이터를그래프 구조로 표현하는 방식이다.
- NDBMS는 HDBMS보다 관계 표현이 유연하고 다대다 관계를 지원하는 장점이 있지만, 구성과 설계가 복잡하고 데이터 종속성을 해결하지 못하는 단점이 있다.

RDBMS
- 데이터를 테이블 형태로 표현하는 방식이다.
- RDBMS는 데이터의 중복을 최소화하며 구조변경이 쉽고 SQL 언어를 사용하여 데이터를 쉽게 조작할 수 있다는 장점이 있다.
- ACID 원칙을 준수하여 데이터 무결성과 일관성을 보장한다.
- RDBMS는 현재 가장 널리 사용되는 DBMS로 MySQL, Oracle, SQLite 등이 있다.

ODBMS
- 데이터를 객체 형태로 표현하는 방식이다.
- ODBMS는 객체지향 프로그래밍 언어와 호환성이 높고 복잡한 데이터 타입을 지원하는 장점이 있다.
- 하지만 성능이 낮으며 표준화가 부족하고 SQL과 호환되지 않는 단점이 있다.

NoSQL
- 테이블 형태의 관계형 모델이 아닌 여러가지의 모델로 데이터를 표현하는 방식이다.
- 문서(Document)나 키-값(Key-Value) 쌍이나 그래프(Graph) 등으로 데이터를 나타낼 수 있다.
- 그래서 NoSQL은 어느 한가지 형태의 데이터베이스를 지칭하지 않고, RDBMS의 테이블 형태가 아닌 형태를 띈 DB를 총칭한다.
- NoSQL의 종류로는 MongoDB, HBase, Cassandra, Redis 등이 있다
