→ 연속적 저장을 하기 위해서 C(create) R(read) U(update) D(delete)를 직접해야하는 File을 사용했다.
하지만 데어터베이스는 질의(쿼리)를 하면 자동으로 파일을 관리해준다.
프로그램 하나를 여러 사용자가 사용하는데 이에 대응하기 쉬운 더 좋은 성능을 지닌다.
→ 저장장치 내에 정리되어 저장된 데이터의 집합을 데이터베이스라고 하며, 이를 효율적으로 관리하는 소프트웨어를 DBMS(데이터베이스 관리 시스템) 이라 한다.
현실 세계의 문제를 논리적 데이터로 구성하고, 이를 통해 물리적 데이터로 환원하는 과정을 얘기한다.

→ 위 그림을 보면 더 이해하기 쉽다.
→ 논리 세계가 문제에 대해 생각하는 것이라고 하고, 물리 세계가 그 생각을 실제로 구현하는 것이라고 했을 때, 논리와 물리 사이에 생각을 쉽게 정리할 수 있게 쓰는 과정이 필요하다.
이러한 역할을 해주는 것이 ERD(Entity Relationship Diagram) 이다.
ERD (Entity Relationship Diagram) : 개체들 간의 관계를 나타내는 즉, 데이터베이스 구조를 한 번에 알아보기 위한 다이어그램이다.
그리고 이를 기반으로 테이블을 만든다.
→ 클래스 다이어그램과 차이점 : 정보저장만이 목적이라 메소드가 존재하지 않는다.
→ 데이터베이스에도 여러 종류가 있는데 그 중 관계형데이터베이스는 SQL를 사용한다.
행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스이다.


→ 위와 같이 테이블이 구성된다.
테이블은 이름을 가지고 있으며, 행(row)과 열(column) 그리고 거기에 대응하는 값을 가진다.
→ DB는 database들로 이루어져있고, database는 table들로 이루어져있다. table은 레코드(행)들로 이루어져있고 레코드는 개체들로 이루어져있다.
SQL(Structured Query Language) : 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어이다.
→ 쿼리(Query) : 질의를 하는 것으로, 데이터베이스 종류와 상관없이 사용 가능한 Ansi에서 만든 표준이 존재한다.
(But 사람들은 표준 SQL을 자신들만의 문법으로 바꿔서 사용한다.)
→ SQL문은 대소문자를 구별하지 않는다.
(카멜 케이스를 사용하지 않고 대신에 _ 를 이용한다.
예를 들어 자바에서는 carName 이라고 했다면 DB에서는 car_name 이라고 한다.)
⇒ '키워드 : 대문자', '우리가 붙이는 이름 : 소문자' 로 사용한다.
1) DML(Data Manipulation Language)
: 데이터베이스에 저장된 데이터를 처리하거나 조회, 검색하기 위한 명령어 (데이터 조작)
⇒ INSERT (새로운 데이터 삽입), UPDATE (저장된 데이터 업데이트), DELETE (데이터 삭제), SELECT (데이터 조회)
2) DDL(Data Definition Language)
:데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어 (데이터 정의)
⇒ CREATE(새로운 테이블 생성 또는 인덱스 생성), ALTER (테이블 구조 변경), DROP (테이블 삭제)
3) DCL(Data Control Language)
: 데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성 등을 제어하기 위한 명령어 (데이터베이스 제어)
⇒ GRANT(권한주기), REVOKE(권한뺏기), COMMIT (트랜잭션을 영구적으로 반영), ROLLBACK (이전 상태로 되돌리기), DENY (권한 거부하기)
<🤷우리가 MySQL을 사용하는 이유>
→ 표준 SQL을 잘 반영하고 있다.
→ 다른 데이터베이스보다 가볍다.