MySQL 요약 노트-1

soyeong·2022년 10월 5일
0

MySQL

목록 보기
1/7
post-thumbnail

MySQL 요약 노트 (2022년 1월 ~ 2022년 3월까지 공부했던 내용 정리)
혼자 공부하는 SQL책과 한빛미디어에서 제공하는 유튜브 강의로 공부함

📌 1강 데이터베이스와 SQL

✔️ 01-1 데이터베이스란?

  • 데이터베이스: 데이터의 집합(ex. 카카오톡 메시지, 인스타그램 업로드 사진, 교통카드 이용내역 등)

  • DBMS: 데이터베이스를 관리하고 운영하는 소프트웨어

    • ex. 은행 DBMS: 예금 데이터베이스, 대출 데이터베이스 등 (예금주, 은행직원, 인터넷 뱅킹, ATM 기기 등 동시 접속 및 데이터 공유 O)
    • cf. 엑셀(Excel)은 DBMS가 아님 (대용량 데이터 관리 X, 여러 사용자와 공유 X)
    • DBMS의 종류: MySQL, 오라클(Oracle), SQL 서버(SQL Server), MariaDB 등
    • DBMS의 분류: 계층형, 망형, 관계형, 객체지향형, 객체관계형 등
      • 계층형 DBMS: 각 계층이 트리 형태
      • 망형 DBMS: 계층형 DBMS의 문제점 개선, 하위에 구성원도 연결된 유연한 구조
      • 관계형 DBMS(=RDBMS): 데이터베이스는 테이블로 구성
        • 테이블(table): 하나 이상의 열(=세로, column)과 행(=가로, row)으로 이루어짐(2차원 구조)
  • SQL: 관계형 데이터베이스(RDBMS)에서 사용되는 언어, '에스큐엘' or '시퀄'

    • 표준 SQL: 국제표준화기구에서 SQL에 대한 표준을 정하고 발표함

✔️ 01-2 MySQL 설치하기

  • MySQL: 오라클 사에서 제공하는 데이터베이스 관리 소프트웨어(관계형 DBMS)
    • 무료 에디션: 교육용 or 개인용(ex. 커뮤니티 에디션)
    • 상용 에디션: 영리 목적은 비용 지불(ex. Standard, Enterprise, Cluster CGE)
  • MySQL 서버: MySQL의 여러 소프트웨어 중 엔진 기능을 하는 핵심 소프트웨어(DBMS)
  • MySQL 워크벤치: MySQL 서버/연결하기 위한 클라이언트 도구로 SQL 문을 입력하고 실행함
  • MySQL vs. MariaDB
  • 💻 MacBook Pro(M1)에 설치하기

📌 2강 실전용 SQL 미리 맛보기

✔️ 02-1 데이터베이스 모델링

  • 프로젝트: 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓은 과정(=대규모 소프트웨어를 작성하기 위한 전체 과정)

  • 폭포수 모델: 소프트웨어 개발 단계
    1) 프로젝트 계획
    2) 업무 분석
    3) 시스템 설계
    4) 프로그램 구현
    5) 테스트
    6) 유지보수

  • 데이터베이스 모델링: 테이블의 구조를 미리 설계하는 개념

    • 현실 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
      • i.e. 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업
    • 데이터베이스 모델링은 폭포수 모델의 업무 분석과 시스템 설계 단계
    • ex. 인터넷 쇼핑몰의 데이터베이스 모델링 ➡️ 데이터베이스(회원 테이블, 직원 테이블, 구매 테이블, 물품 테이블)
  • 전체 데이터베이스 구성도

    • 데이터: 단편적인 정보(개별적인 정보)
    • 테이블: 표 형태로 표현한 것
    • 데이터베이스: 테이블이 저장되는 저장소(ex. 쇼핑몰 데이터베이스)
    • DBMS: 데이터베이스 관리 시스템 or 소프트웨어(ex. MySQL)
    • 열(column,컬럼,필드): 테이블의 세로, 각 테이블은 여러 개의 열로 구성
    • 열 이름: 각 열을 구분하기 위한 이름, 각 테이블 내에서는 서로 다른 열 이름
    • 데이터 형식: 열에 저장될 데이터의 형식, 문자 형식, 숫자 형식 등 지정
    • 행(row,로우,레코드): 실질적인 진짜 데이터, 행 데이터=하나의 행
      • 행의 개수=데이터의 개수
    • 기본 키(Primary Key, PK): 기본 키(또는 주키) 열은 각 행을 구분하는 유일한 열(ex. 네이버의 회원 아이디, 학번, 주민등록번호 등)
      • 중복 불가능, 빈 데이터 불가능
    • SQL: DBMS가 알아듣는 언어인 SQL(구조화된 질의 언어)
      • i.e. 사람과 DBMS가 소통하기 위한 언어

✔️ 02-2 데이터베이스 시작부터 끝까지

  • 데이터베이스 구축 절차
    • 데이터베이스 만들기 ➡️ 테이블 만들기 ➡️ 데이터 입력/수정/삭제하기 ➡️ 데이터 조회/활용하기

✔️ 02-3 데이터베이스 개체

  • 데이터베이스 개체는 인덱스, 뷰, 스토어드 프로시저, 트리거, 스토어드 함수, 커서 등

  • 인덱스(index): 책 뒤의 '찾아보기'와 비슷한 개념

    • 인덱스는 수천만~수억 건 이상의 데이터를 처리할 때 해당 페이지로 이동할 수 있는 효율적인 방법

    • ex. 회원 테이블에서 '아이유'를 찾을 때(인덱스X)

      • Execution Plan(실행 계획)탭 클릭: Full Table Scan(전체 테이블 검색)
      SELECT * FROM member WHERE member_name='아이유';
    • ex. 회원 테이블에 인덱스 만들고 '아이유'를 찾을 때(인덱스O)

      • 인덱스 검색(Index Scan)
      • Execution Plan(실행 계획)탭 클릭: Non-Unique Key Lookup(인덱스를 통해 결과를 찾음)
      CREATE INDEX idx_member_name ON member(member_name);
      SELECT * FROM member WHERE member_name='아이유';
  • 뷰(view): '가상의 테이블'

    • 뷰는 실제 데이터를 가지고 있지 않고, 진짜 테이블에 링크된 개념
    • 윈도우즈 운영체제의 '바로 가기 아이콘'과 비슷한 개념
    • ex. 회원 테이블과 연결되는 회원 뷰(member_view) 만들기
      CREATE VIEW member_view
      AS
        SELECT * FROM member;
    • 회원 뷰(member_view) 접근하기
      SELECT * FROM member_view;
    • 뷰의 장점은 보안 도움, 긴 SQL 문을 간략화
  • 스토어드 프로시저: MySQL에서 제공하는 프로그래밍 기능

    • SQL을 묶는 개념, 프로그래밍 언어(ex. C, 자바, 파이썬)에서 사용되는 연산식, 조건문, 반복문 등 사용 가능
    • ex. 스토어드 프로시저 만들기
      • DELIMITER // ~ DELIMITER ; 문은 첫 행과 마지막 행에 구분 문자
      • CREATE PROCEDURE 스토어드 프로시저 이름 지정
      • BEGINEND 사이에 SQL 문
      DELIMITER //
      CREATE PROCEDURE myProc()
      BEGIN
          SELECT * FROM member WHERE member_name='나훈아';
          SELECT * FROM product WHERE product_name='삼각김밥';
      END //
      DELIMITER ;
    • 스토어드 프로시저 호출하기: CALL
      CALL myProc()
    • 스토어드 프로시저 삭제하기: DROP PROCEDURE
      DROP PROCEDURE myProc;

📌 참고문헌

우재남. (2021). 혼자 공부하는 SQL. 한빛미디어. p24-p99.

profile
The ultimate goal is to be a Data Scientist.

0개의 댓글