본문 바로가기

혼공학습단

혼공학습단 11기 - 혼공S (1주차)

 

혼자 공부하는 SQL

# 진도 기본 미션 선택 미션
1주차
(1/2 ~ 1/7)
Chapter 01 ~ 02 p. 80의 shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기 데이터베이스 개체 3가지 설명하기
2주차
(1/8 ~ 1/14)
Chapter 03 p. 138의 확인 문제 2번 풀고 인증하기 데이터 입력, 삭제하는 기본 형식 작성하기
3주차
(1/15 ~ 1/21)
Chapter 04 p. 195의 확인 문제 4번 풀고 인증하기 p. 183 [좀 더 알아보기] 손코딩 실행하고 결과화면 인증하기
4주차
(1/22 ~ 1/28)
Chapter 05 p. 226의 market_db의 회원 테이블(member) 생성하고, p. 229 데이터 입력한 후 인증하기 p. 271 확인 문제 4번 풀고 인증하기
5주차
(1/29 ~ 2/4)
Chapter 06 p. 310 인덱스 생성하고 key_name이 PRIMARY로 출력된 결과 화면 캡처하기 인덱스 생성, 제거하는 기본 형식 작성하기
6주차
(2/5 ~ 2/12)
Chapter 07 ~ 08 p. 363 market_db의 고객 테이블(member)에 입력된 회원의 정보가 변경될 때 변경한 사용자, 시간, 변경 전의 데이터 등을 기록하는 트리거 작성하고 인증하기 p. 402 GUI 응용 프로그램 만들고 인증하기

 

 

이번 주 진도

# 진도 기본 미션 선택 미션
1주차
(1/2 ~ 1/7)
Chapter 01 ~ 02 p. 80의 shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기 데이터베이스 개체 3가지 설명하기

 

혼공 10기를 완주하고 또 혼공 11기를 신청했다!

 

코딩 테스트에서 SQL 문제를 내는 곳이 있기도 했고,

나중에 업무를 하는 데에도 도움이 되지 않을까 싶어 이 책을 선택하였다.

 

10기 회고에서는 딥러닝 쪽을 공부해보고 싶다 하였지만...

세상 일은 모르는 것

저 때는 SQL이 뭔지도 몰랐지...

 

 

 

기본 미션

 

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

 

 

선택 미션

 

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

 

1. 인덱스 index

- 많은 데이터 중 빠르게 원하는 데이터를 찾을 수 있도록 한다.

- 책의 제일 뒤에 수록되는 '찾아보기'와 비슷한 개념이다.

CREATE INDEX 인덱스_이름_만들기 ON 테이블_이름(열_이름)

 

2. 뷰 view

- 링크 된 테이블과 똑같아 보이는 가상의 테이블. (바로가기 아이콘과 비슷)

- 보안이 강화되며 SQL 문도 간단해진다.

CREATE VIEW 뷰_이름_만들기
AS
	SELECT 열_이름 FROM 테이블_이름

 

3. 스토어드 프로시저 stored procedure

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

- 여러 SQL문을 묶거나 연산식, 조건문, 반복문 등을 사용할 수 있다.

생성

DELIMITER //
CREATE PROCEDURE 스토어드_프로시저_이름()
BEGIN
	SQL 문12345...
END //
DELIMITER ;

 

호출

CALL 스토어드_프로시저_이름();

 

 

정리

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

1. 데이터베이스(Database): 데이터의 집합
2. DBMS(Database Management System): 
데이터베이스를 운영하는 소프트웨어.

  - 대용량 데이터를 관리할 수 있어야 하고 여러 명이 공유할 수 있어야 함. 
  - 우리나라에서는 주로 MySQL, MariaDB, Oracle, SQL Server를 사용함.
3. 
DBMS를 관리하기 위해서 SQL(Structured Query Language)이라는 언어를 사용한다. 
  - 국제표준화기구에서 SQL의 표준을 정해서 발표하고 있기에 DBMS들은 표준 SQL을 포함하며 조금씩 기능을 추가한 형태이다.
  - MySQL에서는 SQL, Oracle은 PL/SQL, SQLServer에서는 T-SQL을 사용한다.
4. DBMS는 계층형(Hierachical, 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류된다.
  - 현재는 관계형 DBMS(줄여서 RDBMS)가 가장 많이 사용된다.
  - RDBMS는 테이블(table)이라는 최소 단위로 구성되고 이 테이블은 열(column)과 행(row)으로 구성되는데 이는 흔히 생각하는 표의 형태를 띤다.

 

 

01 - 2 MySQL 설치하기

1. 설치하는 과정은 생략한다!

- 영상에서는 카페에서 받는 법을 알려주었지만 나는 혹시나 실무에서 사용하게 될 때를 대비해 직접 아카이브로 들어가서 해당 버전을 다운로드하였다.

- 주소:https://downloads.mysql.com/archives/installer/

 

MySQL :: Download MySQL Installer (Archived Versions)

Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Installer, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.

downloads.mysql.com

 

아래 설치 파일을 다운로드한다.

이때 Product Version을 책에서 사용하는 버전인 8.0.21로 바꾸어주자.

 

 

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

1. 프로젝트(project): 소프트웨어(software)를 작성하기 위한 전체 과정.
2. 폭포수 모델(waterfall model): 기본적인 소프트웨어 개발 절차 중 하나.

  -  각 단계가 폭포가 떨어지듯 진행 된다는 뜻이다.
  - 프로젝트 계획 -> 업무 분석 -> 시스템 설계 -> 프로그램 구현 -> 테스트 -> 유지보수 단계로 진행.
3. 데이터베이스 모델링(database modeling): 테이블의 구조를 설계. 건축 설계도를 그리는 것과 비슷함.
  - 현실의 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정.
  - 예를 들어 편의점을 데이터베이스로 넣는 다면 직원, 고객, 물품 등을 테이블로 옮길 수 있을 것이다. 테이블에는 그것을 나타낼 수 있는 특징 (예: 물품이라면 가격, 유통기한, 수량, 이름 등)을 저장한다.
4. 전체 데이터베이스 구성도


  - 데이터(data): 하나하나의 정보. 행 안의 칸 하나의 개별적인 정보.
  - 테이블(table): 데이터들을 표 형태로 표현한 것.
  - 데이터베이스(Database, DB): 테이블들이 저장되는 저장소.
  - DBMS: 데이터베이스 관리 시스템 또는 소프트웨어.
  - : 테이블의 가로. 실질적인 데이터이기 때문에 행 데이터라고도 부른다.
  - : 테이블의 세로. 테이블은 데이터를 나타내는 특징을 담은 여러 열로 이루어진다.
  - 열 이름: 각 열을 구분하기 위한 이름으로 전부 달라야 한다.
  - 데이터 형식: 숫자, 문자 등 열에 저장될 데이터의 형식으로 테이블을 생성할 때 열 이름과 함께 지정해주어야 한다.
  - 기본 키(Primary Key, PK): 각 행을 구분하기 위한 유일한 열. 중복되지 않으며 비어있지 않다. ID, 주민등록번호 등이 이런 역할을 한다. 기본 키는 1개만 지정해야 한다.
  - SQL: DBMS에서 작업을 하기 위한 언어.

 

 

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

1. 데이터베이스 만들기

이 기본 화면에서 Schemas라고 되어있는 곳이 데이터베이스가 있는 섹션이다. (스키마 = 데이터베이스)

 

스키마 섹션 우클릭 -> Create Schema를 선택하면 이런 탭이 뜬다.

이름을 지정하고(참고로 SQL에서는 대문자 소문자를 구분하지 않음.) 우측 하단의 Apply를 누른다.

 

그러면 해당 팝업이 뜰 텐데

사실 이 작업은 팝업에 쓰여진 SQL문을 통해 진행할 수 있다.

Apply를 눌러 진행한다.

 

스키마 섹션에 우리가 만든 데이터베이스가 추가된 것을 확인 가능.

 

2. 테이블 만들기

스키마 창에서 원하는 데이터베이스를 우클릭하면 하위에 Tables라는 것이 뜬다.

이 Tables를 우클릭하여 Create Table을 하면 이런 탭이 나타난다.

 

테이블을 만드는 탭을 자세히 살펴보자.

우선 Table Name을 지정한다.

그리고 아래에 열을 추가할 수 있는데 Column Name 아래를 더블 클릭하면 새 열이 나타난다.

Column Name 써주고, Datatype을 지정(직접 타이핑 가능)한다. Datatype괄호의 숫자는 최대 몇 글자인지를 의미한다.

우측에 체크박스가 있는데, PK는 PK 여부. NN은 Null값을 허용하는지 여부이다.

 

마찬가지로 Apply를 누르면 이런 팝업이 나타난다.

 

3. 데이터 입력하기

이번에는 방금 만든 테이블을 우클릭하고 Select Rows - Limit 1000을 선택한다.

그리고 테이블에 데이터를 채워 놓고 Apply 하면 끝.

 

 

데이터는 언제든 Select Rows - Limit 1000를 선택해서 수정, 추가, 삭제를 할 수 있다.

 

4. 데이터 활용하기

- SQL에서는 데이터베이스를 활용하기 위해 주로 SELECT 문을 사용한다.

member 테이블을 조회할 때는 이런 구문을 사용한다.

이 문장을 실행하고 싶으면

1. 데이터 베이스를 더블클릭

2. 구문 드래그

3. 번개 버튼 눌러 실행

을 순서대로 실행하면 된다.

 

SELECT * FROM member;

SELECT의 기본 형식은 SELECT 열_이름 FROM 테이블_이름 [WHERE 조건] 이다.

열_이름: *(전체 열)

테이블_이름: member

 

다른 구문 예시를 살펴보자.

열_이름: member_addr

테이블_이름: member

조건: member_name = '아이유'

 

따라서 아이유라는 이름을 가진 멤버의 주소인 "인천 남구 주안동"이 나타나게 된다.

 

 

02 - 3 데이터베이스 개체

1. 인덱스index

  - 데이터를 조회할 때 결과가 나오는 시간을 대폭 줄여준다. 책의 '찾아보기'와 비슷한 개념.

 

CREATE INDEX idx_member_name ON member(member_name);

INDEX를 추가하기 전엔 전체 테이블을 스캔하여 찾았지만.

member 테이블의 member_name열에 지정한 Index로 찾고 있다.

(자세한 내용은 6장에 있다고 함.)

 

2. 뷰view

  - 가상의 테이블. 진짜 테이블에 링크(link)된 개념으로 바탕화면의 바로가기 아이콘과 비슷하다.

member 테이블을 가지고 view를 만드는 구문이다.

결과는 동일하게 나오지만 사실 실체가 없는 테이블이라고 한다.

 

3. 스토어드 프로시저stored procedure

  - MySQL에서 제공하는 프로그래밍 기능이다.

  - 여러 SQL 문을 묶거나 연산식, 조건문, 반복문 등을 사용할 수 있게 된다고 한다.

아직 구문 안의 자세한 프로세스는 모르겠지만

BEGIN, END 사이의 SQL 구문이 마치 함수처럼 실행되는 것을 볼 수 있다.

 

추가로, 생성한 데이터베이스 개체들은 스키마에서 확인할 수 있다.