[혼공SQL] chapter 2. 실전용 SQL 미리 맛보기(1)

여정이·2024년 1월 6일
0

혼자 공부하는 SQL

목록 보기
3/28

데이터베이스 모델링

데이터베이스 모델링 : 프로젝트 진행에 포함되는 단계 중 하나. 테이블의 구조를 결정하는 과정



폭포수 모델

폭포수 모델 : 소프트웨어 개발 방법론 중하나. 각 단계가 폭포가 떨어지듯 진행되어 이와 같은 이름을 지었다.

"폭포수 모델의 형태. 출처 : 위키백과"

폭포수 모델의 개발 단계

  1. 프로젝트 계획
  2. 업무 분석 : 사용자의 요구 사항이 무엇인지 분석하는 단계
  3. 시스템 설계 : 업무 분석 단계에서 분석한 내용을 컴퓨터에 적용시키기 위해 알맞은 형태로 다듬는 과정
  4. 프로그램 구현 : 시스템 설계의 결과를 프로그래밍 언어로 코딩하는 단계. 계획한 내용을 온라인으로 제공하기 위해서는 Javascript, PHP, JSP 등의 프로그래밍 언어를 사용해야 함
  5. 테스트 : 코딩된 프로그램에 오류가 없는지 확인하는 과정
  6. 유지 보수 : 실제 프로그램을 운영하며 문제점을 보완하고 기능을 추가하는 과정

폭포수 모델의 장단점

  • 개발 단계가 구분되어 프로젝트 진행 단계가 명확함
  • 문제가 발생하여 이전 단계의 내용에 수정이 필요할 때 앞 단계로 돌아가기 어려움





데이터베이스 모델링

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

데이터베이스의 구성

  • 데이터 : 하나하나의 단편적인 정보
  • 테이블 : 데이터를 입력하기 위하여 표 형태로 표현한 것
  • 데이터베이스
    • 테이블이 저장되는 저장소
    • 보통은 데이터를 저장하는 곳이라는 의미로 원통 모양의 그림으로 표현
    • 각 데이터베이스는 서로 다른 이름을 사용해야 함
  • DBMS : 데이터베이스 관리 시스템
  • : 테이블의 세로줄
    • 각 테이블은 여러 개의 열로 구성됨
  • 열 이름 : 각 열을 구분하기 위한 이름
    • 각 테이블 안에 있는 열들의 이름은 서로 달라야 함
  • 데이터 형식 : 열에 저장된 데이터의 형식. (ex. 문자, 정수) 테이블을 생성할 때 형식을 지정해줌
  • : 실질적인 데이터. 행의 개수 == 데이터의 개수
  • 기본 키(Primary Key, PK) : 각 행을 구분하는 유일한 열. 데이터의 고유성을 나타내기 때문에 중복될 수 없음
  • SQL : DBMS에서 작업하기 위해 필요한 언어





데이터베이스 구축하기

데이터베이스 구축 절차

  1. 데이터베이스 만들기
  2. 테이블 만들기
  3. 데이터 입력 / 수정 / 삭제하기
  4. 데이터 조회 / 활용하기

이제부터 MySQL Workbench를 활용하여 간단한 데이터베이스를 구축해 보겠다. 아래 캡처 화면의 왼쪽 부분에 굵은 글씨로 된 shop_db는 데이터베이스를 만들고, 해당 데이터베이스 안에 member와 product 테이블을 만들고 각 테이블의 내용을 확인, 수정, 삭제하는 작업을 진행할 것이다.

1. 데이터베이스 만들기

먼저 데이터들의 집인 데이터베이스를 만들어야 한다.

  1. 왼쪽 구역에서 마우스 우클릭 후 나타나는 옵션 중 Create Schema를 클릭한다.

  2. 생성할 데이터베이스의 이름을 shop_db로 입력하고, 우측 하단에 Apply 버튼을 클릭하여 데이터베이스를 만든다.

  3. 이후 하나의 SQL문이 나오는 창이 뜨는데, 이는 SQL문으로 스키마를 생성하는 작업을 표시하는 것이다. 간단히 말해 우리가 하는 작업과 저 문장은 같은 것이라는 것이다. 그러니 다시 한 번 Apply 버튼을 클릭해주자.

2. 테이블 만들기

이번 단계에서는 members와 product 테이블을 만들고, 각 테이블에 데이터를 삽입해보겠다. 이번에 만들 테이블의 요구 조건은 아래 표와 같다.

members table 요구사항
열 이름(한글) 영문 이름 데이터 형식 최대 길이 널 허용 안함(Not Null, NN)
아이디(기본 키) member_id 문자(CHAR) 8글자 YES
회원 이름 member_name 문자(CHAR) 5글자 YES
주소 member_addr 문자(CHAR) 20글자 NO
product table 요구사항
열 이름(한글) 영문 이름 데이터 형식 최대 길이 널 허용 안함(Not Null, NN)
제품 이름(기본 키) product_name 문자(CHAR) 4글자 YES
가격 cost 숫자(INT) - YES
제조일자 make_date 날짜(DATE) - NO
제조회사 company 문자(CHAR) 5글자 NO
남은 수량 amount 숫자(INT) - YES
  • 각 데이터 별로 정해진 형식에 따라 입력해야 한다. (CHAR : 문자 형식, INT : 정수 형식, DATE : 날짜 형식)
  • Not Null : 반드시 입력해야 함을 의미함.
  1. 화면의 좌측 구역 중 Tables를 선택하고 마우스 우클릭-Create Table을 클릭한다.

  2. 테이블 생성 화면에서 위 테이블 생성 조건에 맞게 Table Name에는 members를 입력한 후, 각 열의 조건도 설정하고 우측 하단의 apply를 클릭하여 하나의 테이블을 만든다. PK와 NN은 체크박스로 클릭하면 된다. 문자열 길이의 최댓값은 ()안에 숫자를 입력하여 지정할 수 있다. 모든 설정을 마치고 우측 하단의 Apply버튼을 누르면 데이터베이스를 생성할 때와 마찬가지로 SQL문이 나와 있는 창이 뜨는데, 이 역시 같은 의미를 가진 것이므로 무시하고 Apply를 클릭한다.

  3. 위의 과정을 똑같이 하여 product 테이블도 생성한다.

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

  1. 데이터 입력하기

이번에는 아래의 그림과 같이 데이터를 입력할 것이다.

1.1. 좌측 구역에서 members를 클릭 -> 마우스 우클릭 -> Select Rows를 클릭하면 하나의 표가 나오는데, 해당 창에서 엑셀에서 데이터를 입력하듯이 입력하고 Apply 버튼을 클릭하면 된다!

1.2. product에서도 위와 같이 작업해주자.

  1. 데이터 추가/수정하기
    2.1. 이미 만들어진 테이블에서 데이터를 수정해보자. 마찬가지로 이미 생성된 테이블을 members를 클릭 -> 마우스 우클릭 -> Select Rows를 클릭하여 선택하고, 수정하고 싶은 데이터를 더블클릭 하고, 수정할 내용을 입력, Apply 버튼을 클릭하면 된다.

  2. 데이터 삭제하기
    3.1. 삭제하고 싶은 행의 데이터를 선택 후 우클릭 -> Delete Row(s)를 클릭한다. 이후 나오는 창에서 Apply 버튼을 클릭하면 완료.

지금까지 위의 모든 과정을 마우스로 조작했는데, 이를 SQL문을 활용해서 똑같이 할 수 있다. 중간중간 나오는 CREATE, UPDATE, DELETE와 같은 예약어들을 볼 수 있었을 것이다. SQL문으로 테이블을 관리하는 방법에 대해서는 추후 공부하도록 하자.

4. 데이터 조회 / 활용하기

✔️ 시작하기 전에 알아두자!
아래 캡처 화면의 상단에 있는 버튼들 중 가장 왼쪽에 있는 아이콘을 눌러 새로운 SQL 쿼리 창을 생성해준다. 그러면 코드를 입력할 수 있는 창이 생성되는데, 이 곳에서 SQL문을 입력하여 테이블을 관리할 수 있다.

1. SELECT 활용하기

쿼리 창에 SELECT * FROM members;를 입력한 후, ctrl+Enter를 눌러보자. 아래의 결과 창에 members 테이블이 나타난다.

해당 SQL문은 member 테이블의 모든 열을 보여달라는 의미이다.

  • SELECT : 보여주라는 명령어
  • : 모든 열, 특정 열만을 보고 싶다면 * 대신 열의 제목을 입력하면 된다.
  • FROM : 어떤 테이블에서?
  • members : 해당 자리에는 보고싶은 테이블의 이름을 입력한다. 지금은 members 테이블을 입력했는데, product 테이블이 보고싶다면 product를 입력하면 된다.

위의 내용을 활용하여 아이유 회원에 대한 정보만을 추출해보자. 간단한 SQL문 하나를 활용하면 된다.

SELECT * FROM member WHERE member_name = '아이유';

그러면 아래의 결과처럼 member_name이 '아이유'인 행에 대한 결과만 출력되는 것을 확인할 수 있다.

0개의 댓글