All About

혼자 공부하는 SQL_1주차 정리 및 미션 본문

혼공학습단/혼공 SQL(11기)

혼자 공부하는 SQL_1주차 정리 및 미션

ColorNScent 2024. 1. 7. 18:39

혼자 공부하는 SQL 1주차

※ 순서

Chp 1. 정리

Chp 2. 정리

미션

 

Chp 1. 데이터베이스와 SQL

■ 데이터베이스 알아보기

  • 데이터베이스와 DBMS
    • 데이터베이스(Database, DB): 데이터의 집합
    • DBMS(Database Management System): 데이터베이스를 관리하고 운영하는 소프트웨어
      • 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유&동시 접근 가능해야 함
      • ex) 은행의 예금 계좌
      • 예외) 엑셀: 데이터 집합을 관리하고 운영 → DBMS, 대용량 데이터 관리&여러 사용자와 공유 X → DBMS X
    • DBMS 종류
      • MySQL, MariaDB, Oracle, SQL Server, SQLite 등
  • DBMS의 발전 과정
    • 종이에 펜으로 기록
    • 컴퓨터에 파일로 저장
      • 파일 형태로 저장
        • 한 번에 한 명이 사용자만 작업 가능
        • 기록 누락, 기록 중복 등의 문제 발생 가능 ← (불일치가 파일의 가장 큰 문제점)
        • 한 명이 처리 or 소량의 데이터 처리 → 속도 빠름&사용법 쉬움
    • DBMS의 대두와 보급
      • 1973년, 학자 에드거 프랭크 커드(E.F. Codd)가 이론 정립 
      • SQL(Structured Query Language): DBMS에 데이터를 구축, 관리, 활용하기 위해 사용되는 언어
  • DBMS의 분류
    • 계층형 DBMS(Hierarchical DBMS)
      • 처음으로 등장한 DBMS 개념, 1960년대 시작
      • 트리 형태
      • 문제점: 구성 완료 후 변경 어려움/다른 구성원 찾아가는 것 비효율적
      • 지금은 사용 X
    • 망형 DBMS(Network DBMS)
      • 계층 DBMS의 문제점 개선, 1970년대 등장
      • 장점: 하위 구성원끼리 연결된 유연한 구조
      • 단점: 잘 활용하려면 모든 구조를 이해해야만 프로그램 작성 가능
      • 지금은 거의 사용 X
    • 관계형 DBMS(Relational DBMS, RDBMS)
      • 대부분의 DBMS가 RDBMS 형태 사용
      • 테이블: 최소 단위, 하나 이상의 열&행으로 구성(2차원 구조)
        • 모든 데이터가 테이블에 저장
        • 가장 기본적이고 중요한 구성
        • + 맨 처음 행: 열 이름 나타냄/열&행 개수 셀 때 → 열: 그대로 셈, 행: 열 이름이 포함된 행 제외 후 셈
    • 객체지향형 DBMS(Object-Oriented DBMS)
    • 객체관계형 DBMS(Object-Relational DBMS)
  • DBMS에서 사용되는 언어: SQL
    • SQL(Structured Query Language)
      • 관계형 데이터베이스(RDBMS)에서 사용되는 언어
      • 일반적인 프로그래밍 언어와는 조금 다른 특성 가짐
    • 표준 SQL(Standard SQL): 국제표준화기구에서 지정하는 SQL의 표준
      • 대부분의 DBMS 회사가 표준 SQL 준수, But 각 제품의 특성 반영한 SQL 사용
        • ex) MySQL: 표준 SQL + SQL / Oracle: 표준 SQL + PL/SQL / SQL Server: 표준 SQL + T-SQL

 

■ MySQL 설치하기

-책에서는 Windows에서 설치하는 방법만을 소개하고 있다.

-나는 Mac 유저이기 때문에 구글링을 통해 설치(사실 전에 쓰던 노트북은 Windows 기반이어서 전 노트북에서 실습을 진행할까 했지만 이왕 맥북 산거 여기에 다시 설치해야지..^^)

-시간이 된다면 Windows&Mac에서의 설치 방법을 정리해 기록해보도록 하겠다.

  • MySQL 서버&MySQL 워크벤치 관계
    • MySQL 서버(MySQL Server): 데이터베이스 엔진 운영하는 가장 중요한 프로그램(ex. 네이버)
      • MySQL의 여러 소프트웨어 중 엔진 기능하는 핵심 소프트웨어(DBMS)
    • MySQL 워크벤치(MySQL Workbench): MySQL 서버에 접속하기 위한 프로그램(ex. 웹 브라우저)
      • MySQL 서버에 접속/연결 위한 클라이언트 도구
      • SQL 문 입력&실행
    • root: MySQL 관리자 이름
      • 가장 높은 권한의 사용자
      • MySQL 설치 시 기본적으로 생성

 

 

Chp 2. 실전용 SQL 미리 맛보기

■ 건물을 짓기 위한 설계도: 데이터베이스 모델링

-데이터베이스 모델링(Database Modeling): 현실 세계에서 사용되는 작업 or 사물들을 DBMS의 테이블로 옮기기 위한 과정

    -테이블의 구조를 미리 설계하는 개념

    -프로젝트에서 데이터베이스 모델링이 잘 되어야 제대로 된 데이터베이스 구축 가능

-폭포수 모델(waterfall model): 소프트웨어 개발 단계 중 하나, 폭포가 떨어지듯 개발 단계 진행

    -프로젝트 진행 위해 대표적으로 사용

    -데이터베이스 모델링: (폭포수 모델의) 업무 분석&시스템 설계 단계에 해당

        -해당 단계를 거치면 가장 중요한 데이터베이스 개체인 '테이블 구조' 결정

-프로젝트: 현실 세계를 컴퓨터 시스템으로 옮겨놓는 일련의 과정

  • 프로젝트 진행 단계
    • 프로젝트: 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정
      • 대규모 소프트웨어를 작성하기 위한 전체 과정
      • 소프트웨어도 절차를 갖춰 만들어야함 → 절차를 연구하는 분야: 소프트웨어 공학
      • 폭포수 모델(waterfall model): 소프트웨어 공학에서 가장 기본적으로 언급되는 소프트웨어 개발 절차(각 단계가 폭포 떨어지듯 진행)
        1. 프로젝트 계획: 계획 단계
        2. 업무 분석: 업무 파악 및 정리(데이터베이스 모델링)
        3. 시스템 설계: 업무 분석을 컴퓨터에 적용시키기 위해 알맞은 형태로 다듬는 과정(데이터베이스 모델링)
        4. 프로그램 구현: 실제 프로그래밍 언어로 코딩
        5. 테스트: 코딩된 프로그램 오류 확인
        6. 유지보수:문제점 보완 및 기능 추가

                        -단점: 문제 발생 시 앞 단계로 돌아가기 어려움

                        -각 단계가 명확하여 지금도 많이 사용 중

  • 데이터베이스 모델링(Database Modeling): 현실에서 사용되는 사물 or 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
    • 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업
    • 특징을 추출해서 데이터베이스로 만들기 → '테이블'이라는 개체로 변환
  • 전체 데이터베이스 구성도
    • 데이터(data): 단편적인 정보
    • 테이블(table): 데이터 입력 위한 표 형태
    • 데이터베이스(Database, DB): 테이블이 저장되는 저장소(데이터의 저장소)
      • 데이터베이스는 이름이 서로 달라야 함
    • DBMS(Database Management System): 데이터베이스 관리 시스템 or 소프트웨어
    • 열(column): 테이블의 세로 (=필드)
    • 열 이름: 열을 구분하기 위한 이름
      • 각 테이블 내에서 서로 달라야 함
      • 영문으로 설정해야 문제 X
    • 데이터 형식: 열에 저장될 데이터의 형식
      • 테이블 생성 시 열 이름과 함께 지정
    • 행(row): 테이블의 가로. 실질적인 진짜 데이터 (=행 데이터)
      • 행의 개수 = 데이터의 개수
    • 기본 키(Primary Key, PK): 기본 키(=주키) 열은 각 행을 구분하는 유일한 열
      • 중복 X, 빈 상태 X
      • 테이블 내에는 여러 열이 있지만, 기본 키는 1개(1개의 열)만 지정 가능
      • ex) 주민번호, 학번, 아이디
    • SQL(Structured Query Language): 구조화된 질의 언어, 사람과 DBMS 소통 위한 언어, DBMS가 알아듣는 언어

 

■ 데이터베이스 시작부터 끝까지

-데이터베이스 구축 절차

    -데이터베이스 만들기

    -테이블 만들기

    -데이터 입력/수정/삭제하기

    -데이터 조회/활용하기

  • DBMS 설치하기
  • 데이터베이스 만들기
    • 스키마(schema): MySQL 안의 데이터베이스. 데이터베이스와 동일한 용어
  • 테이블 만들기
    • 테이블 설계하기: 테이블의 열 이름&데이터 형식 지정
      • 열 이름
        •  영문으로 만들 때 띄어쓰기 권장 X → 띄어쓰기 할 경우 큰따옴표("")로 묶어줘야 함
        • 보통은 언더 바(_)로 구분
      • 데이터 형식: 열에 저장될 데이터의 형식
        • CHAR(문자), INT(숫자;정수), DATE(날짜;연, 월, 일) 등
      • 예약어: 기존에 약속된 SQL
        • SELECT, FROM, WHERE 등
      • 널(Null): 빈 것
      • 널 허용 안함(Not Null, NN): 반드시 입력해야 한다는 의미
  • 데이터 입력하기
    • 기본 키 열로 자동 정렬(오름차순)
    • INSERT: 데이터 입력
    • UPDATE: 데이터 수정
    • DELETE: 데이터 삭제
  • 데이터 활용하기
    • SELECT: 데이터 조회
      • SELECT 열_이름 FROM 테이블_이름[WHERE 조건]
      • *: 모든 열 → '해당 테이블의 모든 열을 보여줘'
        • + SQL 뒤에 세미콜론(;)
      • ,:  열 이름 콤마(,)로 구분 시 필요 열만 추출

 

■ 데이터베이스 개체

  • 데이터베이스 개체(Database Object)
    • 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등
  • 인덱스: 데이터를 빠르게 찾을 수 있도록 도움
    • 책 뒤의 '찾아보기'와 유사
  • 뷰: '가상의 테이블', 테이블과 상당히 동일한 성격의 데이터베이스 개체
    • 일반 사용자 입장에서는 테이블과 뷰 구분 X
    • 뷰 - 실제 데이터 가지고 있지 않음(실체 X), 테이블에 링크된 개념
    • 윈도우 OS의 '바로가기 아이콘'과 유사
    • 뷰의 실체: SELECT 문
    • 뷰를 사용하는 이유
      • 보안에 도움됨
      • 긴 SQL 문을 간략히 만듦
  • 스토어드 프로시저: 여러 개의 SQL 묶거나 프로그래밍 기능 제공
    • 연산식, 조건문, 반복문 등 사용 가능
    • DELIMITER: 스토어드 프로시저 묶어주는 예약어
    • CALL: 스토어드 프로시저 호출하는 예약어
    • CREATE: 개체 생성문, 데이터베이스 개체 생성 시 사용하는 예약어
      • CREATE 개체_종류 개체_이름
    • DROP: 개체 삭제문, 데이터베이스 개체 삭제 시 사용하는 예약어
      • DROP 개체_종류 개체_이름

 

 

▶ 1주차 미션

    ▷ 기본 미션

<p.80 아이유 회원에 대한 정보만 추출>

 

    ▷ 선택 미션

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

    A. 

    -인덱스: 데이터를 빠르게 찾을 수 있도록 도우며, 책의 '찾아보기'와 비슷한 개념

    -뷰: 테이블과 상당히 동일한 성격의 개체('가상의 테이블'), '바로가기 아이콘'과 비슷한 개념. 실체가 없고 테이블에 링크된 개념

    -스토어 프로시저: 여러 개의 SQL을 묶어줌, 프로그래밍 기능 제공. 프로그래밍 언어에서 사용되는 연산식, 조건문, 반복문 등 사용 가능