SQL

데이터베이스 이론

Bordercolli 2023. 8. 9. 17:15
728x90

1. DB

  • 데이터베이스도 프로그램이다.
  • 체계화된 데이터들의 모임
  • 여러 응용 시스템들의 통합된 정보를 저장하여, 운영할 수 있는 공용 데이터의 묶음
  • 논리적으로 연관된 하나 이상의 자료 모음으로, 데이터를 고도로 구조화함으로써 검색/ 갱신 등의 데이터 관리를 효율화함.
  • DBMS는 데이터베이스를 관리하는 시스템 

1-1. DB의 장점

  1. 데이터 중복 최소화
  2. 데이터 공유
  3. 일관성, 무결성, 보안성 유지
  4. 최신의 데이터 유지
  5. 데이터의 표준화 기능
  6. 데이터의 논리적, 물리적 독립성
  7. 용이한 데이터 접근
  8. 데이터 저장 공간 절약

1-2. DB의 단점

  1. DB 전문가 필요 (은행 고객 정보 데이터베이스로 관리함. 어떻게 관리하느냐에 따라서 속도 차이가 생긴다.)
  2. 많은 비용 부담 
  3. 시스템의 복잡성

 데이터 베이스 왜 사용해요? 그냥 엑셀에 하면 안되나요?

엑셀로 데이터를 관리를 하는 것은 한계가 있다.

엑셀로 대용량의 데이터를 관리할 때 (1000줄 ~ 30000줄까지) 파일을 여는 것도 엄청 오래 걸린다. 또한 데이터를 찾는데 굉장히 오랜 시간이 걸린다. 하지만 DB를 사용하면다면 이런 대용량 데이터를 큰 무리없이 저장할 수 있고, 엄청 많은 데이터에서 내가 필요한 정보를 가져오거나 검색, 수정, 중복 데이터 삭제 등 그런 데이터들을 쉽게 처리할 수 있다.

데이터 베이스는 데이터가  커짐에 따라서 있을 수 있는 데이터 관리에 대한 문제, 그리고 수 많은 데이터에서 내가 필요로 하는 데이터를 빠르게 편리하게 검색할 수 있는 기능들을 특별한 지식 없이 DB프로그램이 알아서 해준다.

2. DB, RDB, DBMS, RDBMS 

DB는 DB를 관리할 수 있는 시스템을 DBMS (DB를 다룰 수 있는 소프트웨어)

RDBMS는 RDB를 관리할 수 있는 시스템 (RDB를 다룰 수 있는 소프트웨어)

TOP3로 오픈소스 RDBMS로는 MySQL, PosgreSQL, SQLLite가 있다.

오픈소스가 아닌 것에는 oracle이 독자적이다.

 

3. RDB의 구성요소

1. 테이블은 행과 열로 나뉜다. SELECT해서 Customerid만 뽑앗는데, Customerid를 뽑은 것은 데이터를 선택해서 만든 가상의 부분집합. 

 

2. 왜냐하면 Customerid를 우리는 앞 전에 고객 번호라고 하여 as를 사용하여 바꾸어 보았는데, 이건 실제 raw테이블에서 바뀌는 것이 아니다. 그래서 가상의 부분집합이다.

 

3. VIEW(데이터를 선택하여 만든 가상의 부분 집합 )

 

4. SQL(Structured Query Language)

SQL은 스토리지 언어의 표준

DB를 사용하는 언어라면 SQL을 다룰 수 있어야 한다.

 

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 분석과정

KDD 분석절차(5가지 프로세스)

회사에 들어가면 데이터가 없거나 데이터가 있지만 내가 만질 수 있는 권한이 없거나 아니면 데이터를 밖에서 수집해야하거나 이러한 경우들이 대부분이다.

그래서 우리는 데이터를 모아야하는데 KDD분석절차 5가지 프로세스 앞에는 백앤드에 관한 지식이 좀 있으면 좀 더 수월하게 1번까지 올 수 있다.

그리고 데이터가 모여져 있다면 데이터 선택/ 전처리까지 가능하다. 

물론 데이터 변환도 SQL에서 할 수 있지만 파이썬 같은 걸로 좀 더 유용하게 사용할 수 있기 때문에 앞에 두 단계 선택/ 전처리까지라고 생각하는 것이 맞다.

데이터마이닝이란 분석 목적에 맞는 데이터마이닝 도구를 사용하여 어떤 패턴을 찾거나 에측하는 작업들을 하게 된다. 그리고 데이터마이닝에서 나오는 데이터를 기반으로 데이터 분석 결과에 대한 해석을 하고 그것에 대해서 업무에 반영을 한다.

EX) 게임을 그만둔지 2년이 지난 사람들에게 20만원어치를 발급했더니 대부분 돌아오더라. 라고 결론이 섰다면 의사결정이 선 것이다.

이게 발견된 지식을 업무에 반영하는 것 

 

7. 정형 데이터와 비정형 데이터

정형데이터: 테이블에 들어있는 데이터라고 보면 되고, 대부분의 데이터들은 정형데이터처럼 깔끔하게 정리가 되어 있지 않다.

비정형 데이터: 구조화되어 있지 않은 데이터로 만약 파이썬을 하여 크롤링을 하게 된다면 비정형 데이터를 크롤링하여 정형데이터로 만들어 주는 작업을 하게 된다.

 

8. CRUD -> 개발자들하고 의사소통할 때 많이 사용하는언어

: Create, Read, Update, Delete

 

9. 홈페이지를 제작한다면?

HTML/CSS + PHP + MySQL로 홈페이지 게시판을 만들어보자.

(실 서비스는 보안 이슈로 인해서 Framework를 사용하기를 권장.)

여기다가 sql인젝션 공격도 하면서 어떻게 방어를 할지를 생각해보는 것도 좋을 것

 

10. RDBMS(Relational Database Management System, 관계형 데이터 베이스 관리 시스템) 이해

  • 데이터베이스의 한 종류, 가장 많이 사용됨.
  • 역사가 오래되어, 가장 신뢰성이 높고, 데이터 분류, 정렬, 탐색 속도가 빠르다.
  • 관계형 데이터베이스 == 테이블!
  • 2차원 테이블 형식을 이용하여 데이터를 정의하고 설명하는 데이터 모델
  • 관계형 데이터베이스에서는 데이터를 속성과 데이터 값으로 구조화(2차원 테이블 형태로 만들어짐)
  • 데이터를 구조화한다. → 속성(컬럼, 필드)과 데이터 값(행, 레코드, 튜플) 사이에 관계를 찾아내고 이를 테이블 모양의 구조로 도식화한 것 
  • 속성 == 컬럼 == 필드, 행 == 레코드 == 튜플
  • 관계형 데이터베이스 관리 시스템 말 그대로 테이블 간에 관계를 맺음.
  • Primary Key : 우리가 특정 레코드를 지칭해야할 때가 있다. 지칭할 때 unique한 그 레코드에만 있는 특징이 있으면 좋을텐데, 비슷한 형태로 저장을 하기 때문에 특정 레코드를 지정하기는 쉽지 않다. 그래서 보통 테이블을 만들때는 하나의 키를 만든다. 키 필드를 만들어서 각 레코드마다 유일한 값을 지정한다. ex) 순번, 학번 등과 같은 것들처럼 유일한 것! 그래야 특정한 것을 지칭할 수 있기 때문이다. 그래서 "학번 20005621의 튜플을 추출해라" 할 때 해당 튜플만 추출할 수 있음. (즉, 구별할 수 있는 유일한 값)

DB로 모든 데이터가 관리되고 있으니 DB를 잘 알아야 한다.

가장 많이 쓰이는 데이터 베이스 프로그램이 RDBMS이다. 

EX) Oracle, Mysql, Microsoft sql server, PostgreSQL은 RDBMS타입으로 이루어진 데이터베이스이다.

* Mysql과 MariaDB는 사실 동일한 DB이다. 하지만 Mysql은 오라클로 저작권이 넘어갔다. MariaDB는 저작권이 넘어간 Mysql의 본래 프로그램 소스를 가지고 별도로 개선하고 있는 데이터베이스이다. 그냥 우리가 보기에는 동일한 DB이다.

RDBMS는 Oracle, Mysql, Microsoft sql server, PostgreSQL+SQLite, MariaDB 만 알아도 된다.

 

정리: 관계형 데이터베이스는 테이블을 여러 개 만들어서 테이블 간의 관계를 지어서 데이터를 관리하는 시스템이다. 

그리고 이런 RDBMS기반 하에 여러 프로그램들이 나왔고, 그 중 오라클, MYSQL이 많이 쓰인다.

 

'SQL' 카테고리의 다른 글

PHP + MySQL 서버 세팅으로 웹 페이지 만들기 (오류로 잠시 중단)  (1) 2023.08.14
MySQL 환경설정(GroomIDE)  (0) 2023.08.09
SQL 조건문  (0) 2023.08.09
SQL로 함수 사용하기  (0) 2023.08.09
CUSTOMER DATA2  (0) 2023.08.08