> For the complete documentation index, see [llms.txt](https://redryan.gitbook.io/studyjoon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://redryan.gitbook.io/studyjoon/hacking/undefined/sql-sql/undefined.md).

# 데이터베이스란 무엇인가?

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FPZBbb1LqFSLKxtwxa2Pt%2Fimage.png?alt=media&#x26;token=916e518f-412b-4bd7-b0b3-62b6abcb3fa2" alt=""><figcaption></figcaption></figure>

## 1. 데이터베이스란 무엇인가?

<figure><img src="https://cdn.inflearn.com/public/files/posts/8f661cec-fe37-48ed-8c71-8159af372eae/89e9c3ab-1df6-4643-96d2-ff1f1686ad07.png" alt=""><figcaption></figcaption></figure>

### 관계형 데이터베이스&#x20;

관계형 데이터베이스는 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다.&#x20;

관계형 데이터 베이스는 행(rwo)과 열(column)로 구성된 테이블에 저장하며, 각 열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장된다.  &#x20;

관계형 데이터베이스는 특정한 형식을 지키기 때문에, 데이터를 정확히 업력 했다면, SQL을 사용하여 데이터에 쉽게 접근할 수 있다.  &#x20;

즉, 관계형 데이터베이스는 스키마가 뚜렷하여 테이블 간의 관계를 직관적으로 파악할 수 있다. 대표적으로 MySQL, Oracle, SQLite, PostgresSQL, MariaDB 등이 있다.  &#x20;

### 비관계형 데이터베이스&#x20;

비관계형 데이터베이스는 주로 데이터가 고정되어 있지 않은 데이터베이스를 가리킨다. NoSQL은 SQL과 반대되는 개념처럼 사용한다고 해서 NoSQL에 스키마가 반드시 없는 것은 아니다.  &#x20;

관계형 데이터베이스에서는 데이터를 입력할 때 스키마에 맞게 입력해야 하는 반면에, NoSQL에서는 데이터를 읽어올 때 스키마에 따라 데이터를 읽어올 수 있다. 이러한 방식을 schema on read라고도 한다.  &#x20;

읽어올 때에만 데이터 스키마가 사용된다고 하여, 데이터를 쓸 때 정해진 방식이 없다는 의미는 아니다. 데이터를 입력하는 방식에 따라 데이터를 읽어올 때 영향을 미친다. 대표적으로 MongoDB, Casandra 등이 있다.

### 용어 정리

<figure><img src="https://cdn.inflearn.com/public/files/posts/c96f424a-ea50-4a1d-9ded-f5b84b9ca61a/2802438b-47ca-4fe2-9d24-ed45acb674c8.png" alt=""><figcaption></figcaption></figure>

A - 테이블, 릴레이션

B - 로우(행), 레코드, 튜플

C - 컬럼(열), 속성

### 관계형 데이터베이스 관리 시스템(RDBMS)

<figure><img src="https://cdn.inflearn.com/public/files/posts/e52aa946-b828-43d0-bf0c-2343ee5cf5ec/49f3d124-8976-415f-85a2-4530f5939725.png" alt=""><figcaption></figcaption></figure>

#### DB vs DBMS

* DB(Database Base) : 단순히 데이터 정보를 저장하는 용도의 저장소
* DBMS(Database Management System) : 데이터베이스에 접근할 수 있도록 해주는 도구
  * 데이터의 추가, 수정, 삭제, 데이터 무결성 유지, 트랜젝션 관리, 백업 및 복원, 보안

#### RDB vs RDBMS

* RDB : 관계형 데이터베이스
* RDBMS : 소프트웨어 제품 - Oracle, MySql, MS SQL, PostareSQL
* 그에 반해 NoSQL 제품은 MongoDB

***

### DBMS를 사용하기 위한 어플리케이션들

<figure><img src="https://cdn.inflearn.com/public/files/posts/42f92e1e-2cd8-4a38-bc66-5e69eb2964e5/4eddd7ed-3db9-4895-b852-497a0a5c6242.png" alt=""><figcaption></figcaption></figure>

#### DBMS를 사용하기 위해서 필요한 어플리케이션

크게 두가지로 DBMS로 접근하여 SQL을 사용할 수 있다.

* SQL 클라이언트 프로그램
* 각종 언어 JAVA, PHP, Py, C, C++

<figure><img src="https://cdn.inflearn.com/public/files/posts/fc20e1b2-a58e-4494-b1c7-21192547e12b/eebb7ee7-d7f0-4eb2-bd57-15d079063533.png" alt=""><figcaption></figcaption></figure>

* 실무에서는 Oracle, MS SQL, IBM Db2 가 제일 많이 보이긴 한다.
* 하지만 기본 SQL 문법을 따르기 때문에 기본은 충실하게 익혀야 한다.
* 그래도 시간이 된다면 각각의 SQL 문법을 공부해보자.
