혼자 공부하는 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/
아래 설치 파일을 다운로드한다.
이때 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 구문이 마치 함수처럼 실행되는 것을 볼 수 있다.
추가로, 생성한 데이터베이스 개체들은 스키마에서 확인할 수 있다.
'공부 기록 > 혼공학습단' 카테고리의 다른 글
혼공학습단 11기 - 혼공S (3주차) (1) | 2024.01.25 |
---|---|
혼공학습단 11기 - 혼공S (2주차) (0) | 2024.01.12 |
혼공학습단 10기 회고 (0) | 2023.08.25 |
혼공학습단 10기 - 혼공컴운 (6주차) (0) | 2023.08.20 |
혼공학습단 10기 - 혼공컴운 (5주차) (0) | 2023.08.13 |