인프런 데이터베이스 강의 (섹션1-섹션3) 기록
데이터베이스
파일: 성능, 보안, 편의성에 한계 존재 -> 이런 한계를 극복하기 위한 전문화 소프트웨어 = 데이터베이스 -> 데이터를 안전하고 편하고 빠르게 보관 가능.
데이터베이스: 성능, 보안, 편의성이 제한있는 파일과 달리 전문화된 소프트웨어
데이터베이스의 입출력
- 입력(input) → Create, Update, Delete
- 출력(output) → Read
데이터베이스 종류
- 관계형 데이터베이스: Oracle(유료, 비쌈, 공기업/대기업 등 규모 큰 곳), MySQL(오픈소스, 무료),
- NoSQL: MongoDB (관계형X)
관계형 데이터베이스
- 데이터 표의 형태로 정리 가능하며 데이터를 안전하고 편리하게 검색/정렬 등이 가능함
예) MySQL, Oracle, SQL Server, PostgreSQL, DB2
- 스프레드시트에서 표를 통해 할 수 있는 기능(필터/정렬) 등의 기능을 데이터베이스의 언어(SQL/코드 ) 등을 사용해 얻어낼 수 있음.
MySQL
설치 및 설정
./mysql -uroot -p:
- -uroot: root라는 이름의 사용자(user)
- -p: password 입력
MySQL의 구조
- 표: 데이터를 기록하는 최종적인 형태
- 이런 표가 많아지면 이걸 정리하는 ‘디렉토리’같은 것이 필요 → 이것이 데이터베이스 (관련 있는 표들을 그룹핑(묶는) 것) = 스키마 (= 표들을 그룹핑할 때 사용하는 것)
- 여러 스키마(데이터베이스)들이 저장되는 곳 = 데이터베이스 서버
MySQL의 서버 접속
- 보안의 장점 → 데이터베이스는 자체의 보안 체제 존재 + 권한 기능 존재.
- 권한: 사용자들마다 모든 테이블에 대해 읽기/쓰기 등의 권한 주거나, 차등적으로 권한을 주거나 할 수 있음
./mysql -uroot -p
- -uroot: root라는 이름의 사용자로 mysql 접속/실행하겠다는 의미 ⇒ 실제로 루트 사용자(관리자)는 모든 권한을 가지고 있는 사용자이기에 해당 사용자 계정으로 데이터베이스에 들어가 작업하는 것은 위험함.
- 이러면 데이터베이스 서버에 들어간 상태
MySQL 스키마의 사용
- 목표: 서버에 들어가서 → 스키마 생성 → 그 안에 표 생성
CREATE DATABASE <데이터베이스 이름>;: 데이터베이스를 생성

DROP DATABASE <데이터베이스 이름>; : 데이터베이스를 삭제
SHOW DATABASES;: 생성한 데이터베이스 확인 (보여주기)

USE <데이터베이스 이름>;: 데이터베이스를 사용하겠다는 의미. 해당 코드 적은 후의 명령들은 이 데이터베이스를 기준으로 실행함.

SQL과 테이블 구조
- SQL (Structured Query Language)
- MySQL Server가 알아들을 수 있는 언어라고 생각할 수 있음.
- 관계형 데이터베이스 제품들이 공통적으로 데이터베이스 서버를 제어할 때 사용하는 언어.
- 용어 정리
- 테이블(table): 표
- 행(row, record)
- 열(column)