CS/DB

[혼공SQL] 혼공단 11기 - 1주차 미션 인증

F12:) 2024. 1. 4. 11:56

 

학부 공부를 하면서 여차저차한 이유로 DB 수업을 못들었다... 네트워크와 더불어 꼭 졸업하면 혼자 공부해야겠다는 생각을 했었는데, 친구의 권유로 하게된 혼공단!! 혼공S 시작부터 끝까지 절대 흔들리지 말고 잘 해야겠다.

 

 

처음에는 학부에서 배운 컴퓨터구조, 운영체제 지식을 살려서 혼공컴운까지 하려고 했지만, 두 개는 진짜 다시 한번 고민해보라는 족장님의 따끔한 일침과 함께... 하나만 신청한 겁쟁이 나

 

시간나면 나 혼자 컴운 진도나 따라가보련다!!

 

 

SQLD도 따고 코테 SQL도 풀 수 있는 내가 되자.

 

 

 

이번에 진행하게 되는 진도! 나... 잘 할 수 있겠지..?? 진짜 못하면 사람도 아니야 ㅠ

 

 

   1주차 기본 미션

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

 

사실 기본적인 쿼리문을 프로젝트와 아카데미를 진행하면서 어느정도는 알고 있어서 수월했다! 아래의 SQL 문으로 해결한다.

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

 

 

 

 

 

   1주차 선택 미션

시간도 널널하고, 다짐이 많아지는 새해니 선택 미션도 진행해본다!

 

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

 

데이터베이스의 핵심 개체는 테이블이다. 하지만 테이블 외에도 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등의 개체도 필요하다.

여기서는 인덱스, 뷰, 스토어드 프로시저의 설명을 요구하는 것 같다.

 

사실 구체적인 개념은 5, 6, 7장에서 배우기로 하였으므로 간단하게 어떤 애구나~ 정도만 알아가는 정도로 정리해본다.

 

인덱스

마치 책에서 책갈피의 역할을 하는 친구이다. 예제를 진행하면서는 단순히 5개 이내의 데이터들로 실습한다. 하지만 실제로 진행하는 프로젝트의 데이터는 수백, 수만 아니 수억개의 데이터가 있을 수 있다. 여기서 내가 원하는 데이터를 찾기 위해서 모든 데이터를 뒤지는 것은 효율적인 행위가 아닌 것처럼 보인다.

 

따라서 우리는 인덱스를 이용한다. 인덱스를 통해 방대한 데이터 사이에서 원하는 데이터를 빠르게 찾아올 수 있게 되는 것이다.

 

DB를 생성한 후에 아래의 쿼리문을 통해서 인덱스를 만들 수 있다.

CREATE INDEX idx_member_name ON member(member_name);

 

member 테이블에서 member_name 열에 인덱스를 지정하게 된 것이다. 아마 이렇게 되면 member_name을 통해서 데이터를 찾을 때 빠르지 않을까 예상해본다!! (이 질문에 대한 답은 6장에서 해결해보자)

 

 

뷰는 마치 가짜 테이블이라고 생각해도 되겠다. 마치 우리가 바탕화면에서 크롬을 클릭할 때, 사실은 크롬이 설치된 경로 내에 있는 실행 파일이 실행되는 것처럼 마치 바로가기와 같은 기능이 아닐까 싶다.

 

사실 필요없다고 생각이 들 수 있는데, 아래와 같은 장점 때문에 사용한다고 한다.

  • 보안 강화
  • SQL 간략화

 

특징만 보면 굉장히 자주 사용되고 뭔가 친숙해야할 것 같은데, 처음 들어본다...

 

무튼! 아래와 같이 쿼리문을 만들어줌으로써 뷰를 만들 수 있다.

CREATE VIEW member_view
AS
	SELECT * FROM member;

 

이렇게 member를 베낀 member_view가 만들어진 것이다. 따라서 아래의 두 개의 쿼리문은 동일한 결과를 나타낼 것이다.

 

SELECT * FROM member_view;
SELECT * FROM member;

 

 

 

뷰를 생성하는 쿼리문을 살펴보면 AS 뒤에 SQL 문을 넣는 것 같은데, 아마 member_view가 AS 뒤에 오는 쿼리문의 결과를 베끼는 테이블이 되지 않을까 감히 유추해본다! (해당 유추에 관한 답은 5장에서 다뤄봅니다!)

 

 

스토어드 프로시저

SQL로 프로그래밍을 가능하게 하는 기능이다. for, if와 같은 프로그래밍에서의 필수 기능들처럼 말이죠.

 

스토어드 프로시저는 내용이 많아 7장에서 다루겠지만 아래와 같이 간략하게 실습도 해보았다.

 

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
	SELECT * FROM member WHERE member_name = '나훈아';
    SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER ;

 

myProc()으로 두 개의 쿼리문을 묶은 것을 볼 수 있다. CALL 키워드를 통해서 해당 함수를 호출할 수 있게 된다.

 

 


 

1주차 미션은 뭔가 무난한 느낌이었다. 아쉽게도 윈도우 기준으로 설명되어 있던데.. 난 arm이라서 workbench가 살짝 불안정한 모습... 그래도 눈치껏 잘 따라가봐야겠다.

 

2주차도 화이팅!