
혼자 공부하는 SQL
아무런 사전 지식 없는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’, ‘어떻게’ 학습해야 할지조차 모르는 입문자의 막연한 마음을 살펴, 과외 선생님이 알
www.aladin.co.kr
(도서 구매를 원하시는 분은 제가 산 알라딘 사이트를 연결해놨으니 이용하시기 바랍니다.)
혼자 공부하는 SQL
✔️ 데이터베이스
✔️ MySQL 설치
✔️ 데이터베이스 모델링
✔️ 데이터베이스 생성
✔️ 데이터베이스 개체
# 데이터베이스(DataBase)
데이터의 집합 / 데이터의 저장소
데이터베이스에 데이터 저장 및 관리
# DBMS(Database Management System)
데이터베이스를 관리하고 운영하는 소프트웨어
여러 사용자나 응용 프로그램과 공유 및 동시 접근 가능해야 함
예시) 학교 DBMS

# DBMS의 종류
- MySQL : 오라클 제작 / 대부분의 운영체제 지원 / 오픈소스(무료) 상용 (MySQL 사용 예정)
- MariaDB : MariaDB 제작 / mac을 제외한 대부분의 운영체제 지원 / 오픈소스(무료)
- PostgreSQL : PostgreSQL 제작 / 대부분의 운영체제 지원 / 오픈소스(무료)
- Oracle : 오라클 제작 / mac을 제외한 대부분의 운영체제 지원 / 상용 시장 점유율 1위
- SQL Server : MS 제작 / 윈도우만 지원 / 중/대형 시장에서 사용
- DB2 : IBM 제작 / mac 제외 대부분의 운영체제 지원 / 메인프레임 시장 점유율 1위
- Access : MS 제작 / 윈도우만 지원 / PC용
- SQLite : SQLite 제작 / 안드로이두, ios 지원 / 모바인 전용, 오픈소스(무료)
# DBMS 발전 과정
종이에 팬으로 기록
▼
컴퓨터에 파일로 저장(엑셀 등의 프로그램 활용)
▼
DBMS 보급
파일의 단점을 보완 + 대향의 데이터를 효율적 관리 및 운영 가능
DBMS를 활용하여 DB의 데이터 사용하기 위해 SQL 언어 필요
# DBMS의 분류
계층형 DBMS : 각 계층이 트리 형태 가짐(처음 등장한 DBMS 개념)
망형 DBMS : 계층형 DBMS의 단점을 보완(하위끼리의 연결도 존재)
--- 현재는 사용하지 않는 개념 ---
관계형 DBMS(RDBMS)
대부분의 DBMS의 형태를 이룸 -> 테이블로 이루어짐(행/열 구성)
+
SQL : 관계형 DB에서 DB 활용 위해 사용되는 언어
# MySQL 설치
도서에서는 윈도우 설치 방법만 존재하지만
저처럼 MAC인 경우를 위해 설치 방법을 알아보겠습니다
1. Google에 MySQL Community Server 다운로드 진행
https://dev.mysql.com/downloads/mysql/
MySQL :: Download MySQL Community Server
Select Version: 9.1.0 Innovation 8.4.3 LTS 8.0.40 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris mac
dev.mysql.com
(맥북 m1 이상의 경우 Arm으로 다운로드 받아 기본으로 설치 진행)
2. MySQL Workbench 다운로드 진행
https://dev.mysql.com/downloads/workbench/
MySQL :: Download MySQL Workbench
dev.mysql.com
3. 맥의 터미널에서 Mysql 비밀번호 설정 진행
해당 과정은 제가 참고한 블로그를 첨부해 드립니다!
https://velog.io/@ldw0123/Mac%EC%97%90-MySQL-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
Mac에 MySQL과 Workbench설치하기
데이터베이스를 공부하는 데 MySQL은 빠질 수 없죠 실리콘 맥(M1, M2칩) 컴퓨터에 MySQL을 설치하는 법을 알아봅시다~! 준비하기 우선, 맥에 homebrew가 설치되어 있어야 합니다 링크를 참조해서 homebrew
velog.io
4. Workbench에 들어가서 Local instance 3306에 비밀번호를 입력하고 실행된다면 준비 완료
# 프로젝트
현실 세계의 업무를 컴퓨터 시스템으로 옮겨 놓는 과정
프로젝트 진행을 위해 폭포수 모델 사용
폭포수 모델
프로젝트 계획 ▶︎ 업무 분석 ▶︎ 시스템 설계 ▶︎ 프로그램 구현 ▶︎ 테스트 ▶︎ 유지 보수
데이터베이스 모델링
테이블의 구조를 미리 설계하는 개념
폭포수 모델의 업무 분석과 시스템 설계 단계에 해당
-> 테이블 구조 결정됨
# 전체 데이터베이스 구성도
데이터 : 단편적 정보(테이블을 이루는 정보)
테이블 : 데이터를 입력하기 위한 표 형태
(DBMS 안에는 여러 개의 테이블로 구성될 수 있음)
데이터베이스 : 테이블이 저장되는 저장소
DBMS : MySQL(DB 관리 시스템 또는 소프트웨어)
열 : 테이블의 세로(여러 개의 열로 구성)
열 이름 : 각 열의 구분을 위한 이름
데이터 형식 : 열에 저장되는 데이터 형식(문자, 숫자 형식 등)
행 : 실질적인 진짜 데이터 = 행 데이터
기본키 : 각 행을 구분하는 유일한 행(중복X, 비어있어도 X(Null 값 허용X))
SQL : 구조화된 질의 언어 -> DBMS에서 DB의 데이터를 활용하기 위함
# 데이터베이스 생성
1. MySQL 워크벤치 실행
Local instance 3306에 비밀번호 입력후 실행
2. schema > 우클릭 > create schema
원하는 DB의 이름 설정, defalut값으로 apply 진행
> 비어있는 데이터베이스 생성됨
(스키마 : Mysql 안의 데이터베이스 )

SCHEMAS에 생성된 shop_db 확인 가능
3. 테이블 생성
쇼핑 데이터베이스에 회원 / 제품 테이블 생성 진행
스키마 창에서 create table 선택

회원 테이블 생성

제품 테이블 생성

테이블이 정상적으로 생성되었다면 스카마 창에 각 테이블이 보이게 됨

4. 각 테이블에 데이터 입력 진행
스키마 창 > shop_db > Tables > 각 테이블 우클릭 > Select Rows - Limits 1000 선택
상단에 select * from shop_db.member; 가 생성되며 하단에 결과 보임
테이블 결과에 NULL부분을 클릭하고 데이터 입력 > apply 진행

동일하게 Product 테이블도 데이터 입력 및 apply 진행

수정, 삭제를 위한 데이터 추가 진행
member 테이블 선택 > Select Rows - Limits 1000 > 새로운 데이터 입력 진행

해당 데이터에서 '미국 텍사스 사막' -> '영국 런던 먹자골목'으로 변경 후 apply 진행

데이터 삭제 시, 원하는 데이터를 선택하고 우클릭 > Delete Row(s) 선택 > 삭제 진행

# 데이터 활용
SCHEMAS에서 shop_db를 더블 클릭하거나
use shop_db; 라고 작성하면 동일하게 데이터베이스 사용 가능합니다.
select
*
from member;

select
member_name,
member_addr
from member;

+
Where절 : 특정한 조건에 해당하는 데이터만 조회 가능
select
*
from member
where member_name = '아이유';

# 데이터베이스 개체
1. 인덱스(Index)
DB에서 데이터 검색 성능 향상을 위해 사용되는 데이터베이스 개체
예를 들어, 책에서 찾고자 하는 문장이 있다면 전체를 보는 것이 아닌
문장에 있는 단어를 먼저 찾고 단어에 해당하는 페이지에 가서 원하는 문장 찾을 수 있음
create index idx_member_name on member(member_name);
2. 뷰(View)
하나 이상의 테이블에서 데이터를 가상으로 만든 데이터베이스 개체
(진짜 테이블에 링크된 개념)
뷰 활용시, 데이터 접근 데어와 보안 강화, 쿼리의 단순화 가능
create view member_view as (
select
*
from member
);

생성된 뷰를 활용하여 select 진행
select * from member_view;

member 테이블과 동일한 데이터가 나오는 것을 확인할 수 있음
3. 스토이드 프로시저
SQL 안에서도 프로그래밍 언어처럼 코딩하며 프로그래밍 로직을 작성
특정 작업을 자동화하여 프로시저를 호출하면 저장된 명령어가 실행됨
select * from member where member_name = '나훈아';
select * from product where product_name = '삼각김밥';
두 SQL 쿼리를 하나의 스토어드 프로시저로 생성
delimiter //
create procedure myProc()
begin
select * from member where member_name = '나훈아';
select * from product where product_name = '삼각김밥';
end //
delimiter ; -- 한칸 띄어야 정상적으로 작동 가능
(delimiter에서 세미콜론을 꼭 한 칸 띄운 후 작성해야 오류가 발생하지 않습니다!)
생성된 스토어드 프로시저를 실행
call myProc();


위 사진처럼 2개의 결과로 보이게 됩니다
이상으로 1주차 내용 정리를 마치겠습니다
혹시 위와 같은 내용을 더 자세히 공부해보고 싶다면
https://www.youtube.com/watch?v=0cRhit1EJM0&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=1
0강부터 5강까지의 내용으로 이루어져 있으니 원하시는 분은 링크를 참조하여
공부하는데 도움 되시길 바랍니다 감사합니다😊

'SQL > 혼자 공부하는 SQL' 카테고리의 다른 글
| [혼공S] 4주차_제약조건을 활용한 테이블 및 가상 테이블(VIEW) 생성 및 활용 (0) | 2025.02.03 |
|---|---|
| [혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용 (1) | 2025.01.23 |
| [혼공S] 2주차_SELECT문과 WHERE절 활용 (0) | 2025.01.18 |
| [혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용 (0) | 2025.01.18 |
| [혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지 (0) | 2025.01.18 |