[혼공학습단, 혼공SQL] 1주차 Chap 01, 02

Jihun Kim·2023년 7월 8일
0
post-thumbnail

혼자 공부하는 SQL - 1주차

  • 부족한 SQL 역량을 키울겸 혼공학습단 10기를 신청하였고, 선정되었습니다.
  • 매주 학습할 분량 진도, 기본, 선택 미션을 수행하고, 블로그에 업로드하는 것이 미션~!
  • 1주차의 분량은 다음과 같습니다다.

  • 각 챕터별로 공부하면서 정리는 깃허브 내에 마크다운으로 정리하였습니다.
  • 블로그에서는 한 번 더 중요한 내용들을 간단하게 정리해 보겠습니다.

https://github.com/kho903/Book/tree/main/%ED%98%BC%EC%9E%90%20%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94%20SQL

Chap 01. 데이터베이스와 SQL

  • 첫번째 장에선 데이터베이스가 뭔지, SQL이 뭔지 등 알아보고, MySQL 및 Workbench를 설치하는 시간을 가졌습니다.
  • 간단하게 정리해 보겠습니다.

데이터베이스, DBMS, SQL

  • 데이터베이스는 데이터 집합, DBMS는 데이터베이스 관리하는 소프트웨어로 MySQL은 관계형DB(RDBMS)입니다.
  • SQL은 관계형 DB에서 사용되는 언어. 즉, 데이터베이스 구축, 관리를 용이하게 하기 위해 사용되는 언어입니다.
  • 테이블이란 열과 행으로 이루어진 2차원 구조로, RDBMS의 핵심 개체입니다.

MySQL, 워크벤치

  • MySQL 서버는 데이터베이스를 운영하는 프로그램. MySQL 워크벤치는 MySQL 서버에 접속하기 위한 프로그램입니다.

Chap 02. 실전용 SQL 미리 맛보기

데이터베이스 모델링

  • 데이터베이스 모델링은 테이블의 구조를 미리 설계하는 개념으로, 테이블 구조가 결정됩니다. 정답이 없고, 좋은 모델링과 나쁜 모델링만 존재합니다.

데이터베이스 구축 절차

  • 데이터베이스 모델링이 완료되면 절차에 따라 데이터베이스를 구축합니다.
  1. 데이터베이스 만들기
  2. 테이블 만들기
  3. 데이터 입력/수정/삭제하기
  4. 데이터 조회/활용하기

데이터베이스 개체

  • 이 내용은 선택미션이므로 아래에서 설명하겠습니다~

기본 미션 1주차!

  • shop_db의 member 테이블에서 아이유의 정보만 추출 후 반환.
select * from member where member_name = '아이유';
  • 해당 sql을 사용하였습니다. member 테이블의 모든 내용을 select 하는데, where 절로 member_name 이 '아이유'인 것만 추출하였다.

선택 미션 1주차! 데이터베이스 개체 3가지 설명하기

  • 먼저, 데이터베이스 개체는 테이블, 인덱스, 뷰, 스토어드, 프로시저, 트리거, 함수, 커서 등이 있습니다.
  • 이중 인덱스, 뷰, 스토어드 프로시저에 대해 설명해 보겠습니다.

인덱스

  • 간단하게 생각하면 책의 제일 뒤에 수록되는 '찾아보기'와 같은 개념입니다.
select * from where member_name = '아이유';
  • 위 sql문을 워크벤치에서 실행하고, 실행 계획을 보면 Full Table Scan이라고 나옵니다. 즉, 전체 테이블을 검색하는 것으로 처음부터 끝까지 검색해서 나온 결과입니다.
  • 그렇다면 인덱스를 생성해 보겠습니다.
create index idx_member_name on member(member_name);
  • 인덱스는 열에 지정하고 ON member(member_name)이라고 적어줍니다.
  • 이렇게 하고 select문을 사용하면 결과는 같지만, 실행 계획은 달라집니다. Non-Unique Key Lookup 이라고 나오는데, 인덱스를 통해 결과를 찾으면 이렇게 나옵니다.

  • 뷰는 테이블과 상당히 동일한 성격의 데이터베이스 개체로, 보안 강화 및 SQL문을 간단하게 사용할 수 있습니다.
  • 간단하게 '가상의 테이블'이라고 생각하면 됩니다.
create view member_view
as
    select * from member;
select * from member_view;
+-----------+-------------+----------------------------+
| member_id | member_name | member_addr                |
+-----------+-------------+----------------------------+
| hero      | 임영웅      | 서울 은평구 증산동         |
| iyou      | 아이유      | 인천 남구 주안동           |
| jyp       | 박진영      | 경기 고양시 장항동         |
| tess      | 나훈아      | 경기 부천시 중동           |
+-----------+-------------+----------------------------+
4 rows in set (0.00 sec)
  • 뷰에 접근하는 것은 테이블에 접근하는 것과 동일하고, 보안 및 긴 SQL을 간략하게 만들 수 있다는 장점이 있습니다.

스토어드 프로시저

  • 스토어즈 프로시저는 SQL 안에서도 일반 프로그래밍 언어처럼 코딩을 가능하게 해줍니다.
  • 여러 개의 SQL문을 하나로 묶어 주고, + 연산식, 조건문, 반복문을 사용할 수 있게 해줍니다.
select * from tableA where name = '김지훈';
select * from tableB where grade = 'A";
  • 위 두 SQL문을 항상 같이 써야 한다고 가정하고 묶어보겠습니다.
delimiter //
create procedure jihunProc()
begin
	select * from tableA where name = '김지훈';
    select * from tableB where grade = 'A";
end //
delimiter ;
  • 호출하기
call jihunProc();
profile
backend studying

0개의 댓글