목표 : DB, SQL에 대해 이해하는 것
1. DB
데이터란 컴퓨터 안에 기록된 문자, 숫자를 의미
이러한 데이터의 집합을 데이터베이스(database,DB)라고 합니다.
2. DB, RDB, DBMS, RDBMS
이러한 데이터베이스를 효율적으로 관리하는 소프트웨어를 데이터베이스 관리 시스템(DBMS: Database Management System) 이라고 합니다.
데이터를 표 형태로 구조적으로 관리하는 모델을 Relational Model(관계형 모델) 이라고 합니다.
이 관계형 모델을 기반의 데이터베이스를 관계형 데이터베이스(RDB:Relational Database)라고 합니다. 또, RDB기반의 데이터베이스 관리시스템이 RDBMS입니다.
대표적인 RDBMS 소프트웨어로는 Oracle, DB2, SQL Server PostgreSQL, MySQL, SQLite 등이 있습니다.
SQL은 이러한 RDBMS(관계형 데이터베이스 관리시스템)의 데이터를 관리하기 위해 설계된 프로그래밍 언어입니다.
SQL을 이용하여 데이터베이스 제어(DCL), 데이터 정의(DDL), 데이터 조작(DML)을 할 수 있습니다.
3. 관계형 데이터베이스의 구성 요소
-
TABLE(행, 열), VIEW(데이터를 선택하여 만든 가상 테이블), INDEX(테이블의 행의 주소), SEQUENCE(시퀀스, 고유번호 자동생성), SYNONYM(시노임, 객체의 별칭) 등의 객체로 구성
-
ENTITY(엔터티, 객체), RELATION(테이블 간 관계)들의 집합
- 튜플(Tuple)은 테이블의 행입니다.
- 속성(Attribute)은 HTML로 따지자면 Table Heading, 컬럼명 입니다. 여기서는 학번, 이름, 주소, 전화번호가 속성이죠.
- 도메인(Domain)은 하나의 속성에서 취할 수 있는 값의 범위를 말합니다. 예를 들어 위에서는 신청 과목에서 전체 과목(C, Java, 객체지향, 알고리즘, Python, Django로…., 등)의 범위를 얘기합니다.
- 차수(Degree)는 속성의 개수입니다. 학생 릴레이션에서는 학번, 이름, 주소, 전화번호이니 총 4개가 될 것입니다.
- 기수(Cardinality)는 튜플의 개수입니다. 위에서는 어트리뷰트를 제외하고 총 5개의 튜플이 존재합니다.
3.1 키의 개념 및 종류
- 기본키는 메인으로 사용할 키를 말합니다. 유일한(고유한) 주민등록번호나, 계좌번호, 전화번호 등을 기본키로 사용할 수 있습니다. 기본키는 NULL을 사용할 수 없습니다.
- 후보키는 기본키를 제외하고 고유한 키들을 말합니다.
- 외래키는 관계되어 있는 테이블에서 참고하고 있는 키를 이야기합니다. 여기서 학생 릴레이션과 수강신청 과목 릴레이션은 서로 학번으로 연결되어 있는 것을 확인할 수 있습니다.
(출처:위니브)
3.2 데이터베이스의 종류
- 계층형 데이터베이스(1:N)
- 망형 데이터베이스(N:M)
- 관계형 데이터베이스(단순한 표 형태의 상호 관계, 1:1, 1:N, N:M관계 표현)
- 객체 지향형 데이터베이스
4. SQL(Strutured Query Language)
SQL은 스토리지 언어의 표준입니다. MySQL, MsSQL, Oracle, Postgres 등의 DB를 사용하여 어떤 프로젝트를 한다면 SQL을 다루실 수 있어야 합니다.
SELECT * FROM Customers;
5. SQL 명령어의 분류
- 데이터 조작어(DML)
- SELECT
- INSERT
- UPDATE
- DELETE
- 데이터 정의어(DDL)
- CREATE DATABASE
- CREATE TABLE
- CREATE INDEX
- ALTER DATABASE
- ALTER TABLE
- DROP TABLE
- DROP INDEX
- RENAME
- TRUNCATE
- 데이터 제어어(DCL)
- GRANT : 권한 부여
- REVOKE : 권한 제거
- 트랜젝션 제어어(TCL)
- COMMIT
- ROLLBACK
- SAVEPOINT
6. Data 분석 과정
(출처:위니브)
- 사전에 데이터 분석 기획을 합니다.
- 1번에서 3번까지의 단계가 전체 과정에 70% ~ 80%를 차지하고 있습니다.
- 기업에 모든 데이터를 누구나 조회 가능하도록 BigQuery같은 곳에 모아두기도 합니다. 이러한 시스템이 갖춰진 회사라면 누구나 간단한 조회가 가능한 SQL 구문을 습득하실 필요가 있습니다.
- 기업에 들어가도 데이터가 없거나 쓸 수 없는 경우도 있습니다. 또는 의미없는 데이터이거나 추가 데이터가 필요할 수도 있습니다. 이 경우에는 공공데이터 포털이나 다른 기관의 데이터를 참고하여 데이터를 만들어야 합니다.
- 데이터 수집부터, 가공하는 것까지 SQL을 사용할 수 있습니다. 물론 분석에도 쓸 수 있지만 분석에는 더 좋은 도구들이 많죠. R, Python 등의 언어가 있고, Tableau와 같은 시각화 솔루션이 있습니다.
7. 정형 데이터와 비정형 데이터
- 정형데이터는 RDBMS에서 사용하는 테이블 안에 들어가 있는 형식이 잡혀 있는 데이터를 말합니다.
- 비정형 데이터(unstructured data, unstructured information, 비정형 정보), 비구조화 데이터, 비구조적 데이터는 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말합니다.(출처 : WIKI)
8. CRUD
"CRUD의 정의"
- Create
- Read
- Update
- Delete