혼자 공부하는 SQL(02-1,2)

Sea Panda·2022년 9월 24일
0

혼자 공부하는 SQL

목록 보기
2/5
post-thumbnail

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

  • 핵심 키워드: 프로젝트, 폭포수 모델, 데이터베이스 모델링, 테이블

0. 시작하기 전에

  • 데이터베이스 모델링(Database modeling)은 테이블의 구조를 미리 설계하는 개념이다. 건축 설계도를 그리는 과정과 비슷하다.
  • 프로젝트를 진행하기 위해서는 대표적으로 폭포수 모델(waterfall model)을 사용한다. 데이터베이스 모델링의 경우 폭포수 모델에서 업무 분석과 시스템 설계 단계에 해당한다. 이 단계를 거치면 가장 중요한 데이터베이스 개체인 테이블 구조가 결정된다.

1. 프로젝트 진행 단계

프로젝트(Project)란 '현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정이다. 더 쉽게 말하면 대규모 소프트웨어(Software)를 작성하기 위한 전체 과정이다.

예전에는 컴퓨터 프로그램은 한두 명의 프로그래머에 의해 작성됐다. 그러나 요즘에는 프로그램 규모도 커졌고, 사용자의 눈높이도 높아져 소프트웨어에서 원하는 기능이 복잡해지다보니 문제가 발생했다. 한두 명의 프로그래머가 감당할 수 없는 Scale이 된 것이다.

소프트웨어를 만들기 위해서는 절차를 갖춰서 만들어야하고, 이러한 소프트웨어 개발 절차 중 하나로 폭포수 모델(waterfall model)이라는 것이 있다. 폭포수 모델은 각 단계가 폭포가 떨어지듯 진행되기 때문에 붙여진 이름이다.

👉 폭포수 모델: 각단계가 폭포가 떨어지듯 진행되기 때문에 붙여진 이름. 프로젝트 계획, 업무 분석, 시스템 설계, 프로그램 구현, 테스트, 유지보수 순으로 진행된다.

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

폭포수 모델의 경우 각 단계가 구분되어 프로젝트의 진행 단계가 명확하다는 장점이 있다.

2. 데이터 베이스 모델링

데이터베이스 모델링(Database modeling)이란 우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정이다.

필요한 데이터를 데이터베이스에 각각의 테이블이라는 개체로 변환한다.

데이터베이스 모델링에는 정답이 없다. 다만, 좋은 모델링과 나쁜 모델링은 존재한다.

3. 전제 데이터베이스 구성도

1. 데이터(data)

하나하나의 단편적인 정보를 의미한다.

2. 테이블(table)

데이터를 입력하기 위해 표 형태로 표현한 것을 의미한다.

3. 데이터베이스(Datbase,DB)

테이블이 저장되는 저장소를 말한다. 테이블과 데이터베이스의 관계는 파일과 폴더랑 비슷한 개념이다. 폴더 안에 파일이 있듯이, 데이터베이스 안에 테이블이 있다고 보면 된다.

4. DBMS(Database Manegement System)

데이터베이스 관리시스템 또는 소프트웨어를 말한다.(ex. MySQL)

5. 열(column)

테이블의 세로를 의미한다. 각 테이블은 여러 개의 열로 구성된다.

6. 열 이름

각 열을 구분하기 위한 이름이다. 열 이름은 각 테이블 내에서는 서로 달라야 한다.

7.데이터 형식

열에 저장될 데이터 형식을 말한다. 데이터 형식은 테이블을 생성할 때 열 이름과 함께 지정해준다. 이때, 동일한 열의 데이터 형식은 동일해야 한다.

8. 행(row)

실질적인 진짜 데이터를 의미한다. 즉, 행의 개수가 데이터의 개수다.

9. 기본 키(Primary Key, PK)

기본 키(또는 주키)열은 각 행을 구분하는 유일한 열을 말한다. 이때 기본 키는 중복이 있어서는 안되며, 비어 있어도 안된다. 테이블에서 오로지 1개만 지정할 수 있으며, 일반적으로 1개의 열에 지정한다.

10. SQL

SQL은 사람과 DBMS가 소통하기 위한 언어이다.

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

  • 핵심 키워드: 스키마, 데이터 형식, 예약어, 기본 키

0. 시작하기 전에

데이터베이스는 데이터를 저장하는 공간이다. MySQL을 설치한 후, 가장 먼저 데이터베이스를 준비해야 한다. 그 다음 데이터베이스 안에 테이블을 생성해야 한다.

테이블은 2차원 표 형태로 이루어져 있다. 각 열에 해당하는 데이터를 한 행씩 입력할 수 있다.
필요하다면 행에 입력된 데이터를 수정하거나 삭제할 수도 있다. 마지막으로 입력이 완료된 데이터를 조회해서 활용할 수 있다.

1. DBMS 설치하기

데이터베이스 구축을 위해선 DBMS를 설치해야 한다. 앞 장에서 이미 MySQL설치를 완료하였다. 하지만 실습에서 사용할 쇼핑몰 데이터베이스는 아직 없는 상태이다.

2. 데이터베이스 만들기

실습을 통하여 쇼핑몰 데이터베이스를 생성한다.

  • Schema(스키마) = database를 의미한다.

    MySQL을 켠 후 Sever창에서 로그인 하여준다. 그 다음 위의 사진에 나와 있듯이 좌측 하단에 [schemas]탭으로 이동한 다음 우클릭하여 create Schema를 클릭하여 준다.

    그러면 위와 같은 화면이 뜨게 되고, DB의 이름을 정해준 후 apply를 클릭한다.

    여기서 CREATE SCHEMA 'shop_db';가 바로 SQL문이다. SQL문을 사용하여 DB를 만들 수 있다. apply를 클릭한 후 다음화면에서도 다시 apply를 클릭한 후 Finsh를 클릭한 다음 좌측 Schema목록에 shop_db가 추가 된 것을 확인하고 탭을 닫아준다.

03. 테이블 만들기

테이블 설계를 완성했다고 가정하고, 그 설계는 다음과 같다

  • 회원 테이블
  • 제품 테이블

회원 테이블은 아이디, 회원 이름, 주소 3개 열로 구성하고 각각의 영문 이름도 지정했다. 또한 데이터 형식은 모두 문자로 지정했다. 문자는 CHAR(Character의 약자)라는 MySQL문법상 이미 약속된 예약어를 사용해야 한다.
제품 테이블의 경우 INT가 새롭게 등장했다. INT는 Integer의 약자로 소수점이 없는 정수를 의미한다. DATE는 연, 월, 일을 입력한다.

테이블에서 널(NULL)은 빈것을 의미하며 이것을 허용하지 않는 다는 것은 반드시 입력해야 한다는 의미이다.

이제 이를 토대로 테이블을 생성한다. 그 상세한 과정은 생략하며 최종 완성본은 다음과 같다.

아직 아무런 입력도 주지 않아 비어 있는 것을 볼 수 있다. 이제 데이터를 입력하여 준다.
데이터가 추가되면 위와 같이 table의 내용이 바뀐다. table의 data는 언제나 수정, 삭제가 가능하다.

04. 데이터 활용하기

주로 SELECT문을 사용하며, 가장 많은 비중을 차지한다. 직접 SQL을 입력해서 데이터를 조회해보자.
이때, SQL문에서 대문자로 작성하는 것은 예약어이다. 소문자를 사용하여도 상관없다. 다만, 이 책에서는 구별하기 위해서 대문자를 이용한다.

  • SELECT a FROM b
    b table로 부터 열 a의 정보를 추출한다. 이때 *기호는 모든 것을 의미한다.


    만일 복수의 열에 대한 정보를 추출하고 싶으면, (,)기호를 이용하여 구분한다.
  • SELCET ~ FROM ~ WHERE (조건)

    특정한 정보만 추출하고 싶을 때 사용하며, WHERE뒤의 조건을 만족하는 정보만을 추출한다.

❗ 요점사항 정리(데이터 활용)

  • SQL은 대소문자를 구분하지 않는다. 하지만 이 책에서는 구분하기 쉽도록 SQL의 예약어는 대문자로 표시한다.

  • SQL의 제일 뒤에는 세미콜론(;)이 반드시 있어야 한다. 가끔 없어도 되는 경우도 존재하지만 그걸 모두 기억하기 보다 있어야 한다고 생각하는 것이 좋다.

  • MySQL은 모든 SQL문을 수행하기 때문에 여러 개의 SQL을 사용할 때는 주의해야 한다. 이때,마우스 드래그를 이용하면 드래그 된 부분만 실행되기 때문에 이 방법을 사용하면 좋다.

0개의 댓글