[혼공스] Chapter 01~02

Klaus·2024년 1월 7일
0
post-thumbnail

1주차 진도(1/2 ~ 1/7) : Chapter 01 ~ 02

✅ 기본 미션

Chapter 01 ~ 02	p. 80의 shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기

🖥️ 코드

select *
	from member
    where member_id = "iyou"
;

select *
	from member
    where member_name = "아이유"
;

🖥️ 결과

✅ 선택 미션

데이터베이스 개체 3가지 설명하기

데이터베이스 개체

  • 인덱스 : 데이터 조회 시 결과 나오는 속도 획기적 개선(= 책 뒤 '찾아보기')
  • : 테이블의 일부를 제한적으로 표현(= '바로가기 아이콘')
  • 스토어드 프로시저 : SQL에서 프로그래밍 가능하도록 해줌

그외

  • 트리거 : 잘못된 데이터 들어가는 것 방지하는 기능.
  • 함수
  • 커서


Chapter 01 데이터베이스와 SQL

(01-1) 데이터베이스 알아보기

데이터베이스와 DBMS

📖 데이터베이스(Database, DB)

  • 데이터의 집합.
  • 다양한 정보가 저장되고 관리되는 공간.

📖 DBMS(Database Management System)

  • 데이터베이스를 관리하고 운영하는 소프트웨어.
  • 특정 목적을 처리하기 위한 프로그램.
  • 여러 명의 사용자, 응용 프로그램과 공유하고 동시 접근 가능해야 함.

DBMS 종류

DBMS제작사작동 운영체제최신 버전 (2023.3.19 기준)기타
MySQLOracleUnix, Linux, Windows, Mac8.0오픈 소스(무료), 상용
MariaDBMariaDBUnix, Linux, Windows10.11.2오픈 소스(무료), MySQL 초기 개발자들이 독립해 만듦
PostgreSQLPostgreSQLUnix, Linux, Windows, Mac15.2오픈 소스(무료)
OracleOracleUnix, Linux, Windows21c상용 시장 점유율 1위
SQL ServerMicrosoftWindows2022주로 중/대형급 시장에서 사용
DB2IBMUnix, Linux, Windows11.5.7메인프레임 시장 점유율 1위
AccessMicrosoftWindows2021PC용
SQLiteSQLiteAndroid, iOS3.41.1오픈 소스(무료), 모바일 전용

(표 내 볼드체 : 책과 다른 부분)

  • 엑셀(Excel) : 대용량 데이터 관리, 여러 사용자 공유의 개념과는 거리가 있어 DBMS가 아님.

DBMS의 발전 과정

1️⃣ 종이에 정보 기록

2️⃣ 컴퓨터에 파일로 저장

  • 파일(file)
    - 단점 : 기록할 주체가 명확하지 않고 중복 기입의 문제 발생 → 정보 불일치 발생.
    - 장점 : 한 명의 사용자가 처리하거나 소량의 데이터 처리 시 속도 빠르고 사용하기 쉬움.

3️⃣ DBMS의 등장

📖 DBMS(Database Management System)

  • 데이터베이스(데이터 집합) 관리 & 운영 위한 시스템/소프트웨어.
  • 파일의 단점 보완하고 대량의 데이터 효율적 관리 & 운영 위해 등장.
  • 1973년 에드거 프랭크 커드(E.F.Codd)가 최초로 이론 정립.

📖 SQL(Structured Query Language)

  • DBMS에 데이터 구축 & 관리 & 활용하기 위해(= DB 사용하기 위해) 사용되는 언어.
  • SQL 이용해 DBMS를 통해 중요한 정보들 입력 & 관리 & 추출 가능.

DBMS의 분류

🏢 계층형 DBMS (Hierarchical DBMS)

  • 1960년대 시작된 처음 등장한 DBMS 개념.
  • 각 계층이 트리(tree) 형태를 가짐.
  • 문제
    - 처음 구성 완료 후 변경하기 상당히 까다로움.
    - 다른 구성원 찾아가는 것이 비효율적.
    → 지금 사용하지 않는 형태.

🕸️ 망형 DBMS (Network DBMS)

  • 1970년대 계층형 DBMS 문제 개선 위해 등장.
  • 하위의 구성원끼리도 연결된 유연한 구조.
  • 문제
    - 잘 활용하기 위해선 모든 구조 이해해야만 프로그램 작성 가능.
    → 지금 사용하지 않는 형태.

🤝 관계형 DBMS (Relational DBMS, RDBMS)

  • 대부분의 DBMS가 사용되는 형태.
  • 모든 데이터가 테이블에 저장됨.

👨‍👩‍👧‍👦 RDBMS의 데이터베이스 구성

  • 최소 단위 : 테이블(table)
    • 구성 : 하나 이상의 (column, 세로) + (row, 가로) = 2차원 구조.

DBMS에서 사용되는 언어 : SQL

📖 SQL (Structured Query Language)

  • 구조화된 질의 언어.
  • 관계형 데이터베이스(RDBMS)에서 사용되는 언어.
  • 일반적인 프로그래밍 언어와는 다른 특성 가짐.
  • 표준 SQL (Standard SQL)
    • 국제표준화기구에서 발표한 SQL 표준.
    • SQL 사용 DBMS 만드는 회사 여러 곳.
      • 회사 제품 특성 모두 포용 ❌ → 표준 SQL 준수 & 각 제품 특성 반영한 SQL 사용.

변경된 SQL

  • 오라클 : PL/SQL
  • SQL 서버 : T-SQL
  • MySQL : SQL


(01-2) MySQL 설치하기 (Mac 버전)

1️⃣ MySQL 설치

1. brew 최신 버전 업데이트

brew update

2. brew에서 MySQL 찾기

brew search mysql

3. brew에서 MySQL 설치

brew install mysql

4. brew에서 MySQL 설치 확인

brew list

5. brew에서 MySQL 설정
1) MySQL 서버 켜기

mysql.server start


2) MySQL 비밀번호 설정

mysql_secure_installation

3) 여러 질문에 응답하며 설치 완료

→ 'ALL done!' 나오면 설정 완료

6. MySQL 사용 명령어 입력

mysql -u root -p

7. 비밀번호 입력하면 MySQL 사용 환경 준비 완료

8. MySQL 서버 종료

mysql> /q
mysql.server stop

2️⃣ MySQL Workbench 설치

1. 설치 사이트 접속
https://dev.mysql.com/downloads/workbench/

2. Operating System이 'macOS'임을 확인 후 'Download' 클릭

3. 'No thanks, just start my download' 클릭

4. 설치 후 환경설정



Chapter 02 실전용 SQL 미리 맛보기

(02-1) 건물을 짓기 위한 설계도 : 데이터베이스 모델링

📖 데이터베이스 모델링 (database modeling)

  • 테이블 구조를 미리 설계하는 것
    → 작업을 DBMS의 DB 개체로 옮기기 위한 과정
  • 데이터베이스 모델링이 잘되어야 제대로 된 데이터베이스 구축 가능.
  • 예시 : 폭포수 모델(waterfall model)의 업무 분석 & 시스템 설계 단계

프로젝트 진행 단계

💧 폭포수 모델

🖥️ 소프트웨어 개발 절차 단계
1. 프로젝트 계획
2. 업무 분석
3. 시스템 설계
4. 프로그램 구현
5. 테스트
6. 유지보수


전체 데이터베이스 구성도

  • 데이터(data) : 단편적인 정보
  • 테이블(table) : 데이터 입력 위해 표 형태로 표현한 것
  • 데이터베이스(Database) : 테이블 저장소
  • DBMS(Database Management System) : 데이터베이스 관리 시스템
  • 열(column) : 테이블 세로
  • 열 이름 : 열 구분 이름
  • 데이터 형식 : 열에 저장될 데이터 형식
  • 행(row) : 실질적인 데이터 → 행의 수 = 데이터의 수
  • 기본 키(Primary Key, PK) : 각 행을 구분하는 유일한 열 → 중복X, 빈 값X
  • SQL(Structured Query Language)


(02-3) 데이터베이스 개체

📎 인덱스

인덱스 검색(Index Scan) : 인덱스 통해 데이터 찾는 것.

장점

  • 데이터 조회 시 결과 나오는 속도 획기적 개선.

생성 방법

ON member(member_name)

  • member 테이블의 member_name열에 인덱스 지정.
CREATE INDEX idx_member_name ON member(member_name);

📺 뷰 (view)

정의

  • 가상의 테이블 → 실제 데이터를 가지고 있지 않음.
  • 진짜 테이블에 링크(link)된 것.
  • SELECT문으로 생성.

장점

  • 보안 강화
  • SQL문 간단 사용 가능

생성 방법

회원 테이블과 연결되는 회원 뷰(member_view)

CREATE VIEW member_view
AS
	SELECT * FROM member;

호출 확인


스토어드 프로시저 (stored procedure)

정의

  • MySQL에서 제공하는 프로그래밍 기능.

장점

  • 하나의 요청으로 여러 SQL문 실행 가능.
  • 여러 개 쿼리 처리 시점에서 네트워크 부하 줄임 → 네트워크 소요 시간 감소.
  • 보수성 좋음.
  • 개발 업무를 구분해 개발 가능 → DB 관련 처리를 API처럼 만들어 제공 가능.

생성 방법

2개의 SQL문 한번에 실행

DELIMETER //
create procedure myProc()
begin
	select * from member where member_name = "나훈아";
	select * from product where product_name = '삼각김밥';
end//
DELIMITER ;


1. 스토어드 프로시저 묶어주는 약속
첫 행 & 마지막 행에 구분문자 DELIMETER// ~DELIMITER;문 작성
2. BEGINEND 사이에 SQL문 작성

🚨 주의

  • 마지막 DELIMITER에 띄어쓰기하지 않고 ;를 붙였더니 Syntax Error 발생!!
    → 반드시 띄어쓰기하기!!!

호출 확인

  • CALL문 이용.

0개의 댓글