본문 바로가기

후기/강의 후기

[완강 후기] 안랩 샘 14기 '데이터베이스 과정 - MySQL'

728x90

 

- 공부 기간 :  2022년 3월 21일 ~ 4월 11일 (주 1회, 총 4주 과정)  <완강>

- 강의 시간 :  총 16시간

- 플랫폼 :  맘잡고

- 100% 온라인 강의

선택 이유


패스트 캠퍼스 강의로 SQL 공부를 시작한 뒤, SQL에 관해서 거부감이 많이 사라졌다. 동시에 더 구체적으로 공부하고 싶다는 의욕이 생겼다. 패스트 캠퍼스 강의로는 배움에 한계가 분명히 있었기 때문에 대안 강의가 필요했다.

 

당시 공부 방향에 대해 고민하고 있었고, 나에게 맞는 부트캠프를 찾고 있던 도중, '안랩샘 아카데미'을 알게 됐다. (주) 안랩에서 청년이나 경력 단절 여성들을 위해 재교육 프로그램을 제공하는 사회공헌 프로젝트였다. 마침 14기를 선발한다고 해서 코스를 살펴보니 SQL 강의도 있었다. 적절한 타이밍에 찾아온 기회였다. 안랩에서 후원하는 만큼 비용은 '무료'였다. 비용에 대한 부담도 없고, SQL을 배울 수 있는 절호의 찬스를 놓칠 수 없었다.

 

하지만 모집 인원은 매우 한정적이었다. 전국에서 총 12명을 선발한다는데 이는 극악의 확률 아닌가! 그래도 안랩샘 아카데미에 대한 마케팅을 본 적 없는 만큼 인지도가 적을 거라고 희망을 가졌다. 짧은 자기소개와 함께 신청을 했고, 감사하게 14기에 선발되어 수업을 들을 수 있었다. 

강의 내용


강의는 100% 온라인, '줌'으로 진행됐다. 월요일 오전 9시부터 오후 1시까지 4시간 동안 주 1회 진행되었으며, 총 4주간 이뤄졌다. 안랩샘 아카데미는 출결 사항에 굉장히 신경을 많이 쓴다. 결석은 물론 지각까지 감점 제도가 도입되어 있으며, 50분 수업하고 10분 쉬는데 시간 관리가 분 단위로 철저하다. 또 중간에 구글폼으로 중간 출결을 하고, 화상 카메라를 킨 채 출석 사진까지 찍는다. 아무래도 안랩이란 대기업에서 후원하는 만큼 관리가 철저히 이뤄지는 것 같았다. 

 

기본적인 커리큘럼은 다음과 같다. 

 

전반적으로 강사가 준비한 PPT를 가지고 개념을 설명하고 실제 MySQL을 통해 실습을 진행했다. 1~2주차까진 SQL 기본 문법에 대해 배웠는데, 나는 패스트 캠퍼스에서 공부한 내용들과 곂쳐 이해가 쉬웠다. 대신 혼자 공부했을 때 헷갈렸던 내용들, 궁금했던 점들을 실시간으로 물어볼 수 있어 좋았다. 초반엔 아마 내가 가장 질문을 많이 했을 것이다.

 

더보기


1. 실제 업계에서 MySQL, 오라클DB, MS SQL 의 사용 빈도가 실제로 어떻게 되나요?
▶ 오라클 > MS SQL > MySQL 순으로 사용함.

2. MySQL을 배우면 이후 다른 DB를 공부하는데 도움이 많이 될까요? 각각의 프로그램이 얼마나 비슷한지 또는 다른지가 궁금합니다.
 도움이 됨. SQL을 표준이라서 동일함.

3. SQLD 자격증 공부를 동시에 하고 싶은데 SQLD 자격증이 취업에 도움이 많이 될까요?
▶ 모르겠음.

4. 만약에 전화번호를 01012345678 이렇게 입력을 했는데, 저장은 자동으로 '-'가 붙도록도 할 수 있나요?
▶ 입력이 자동으로 되진 않음. UPDATE을 사용해야 함. 그러나 보통 데이터 입력할땐 숫자로만 입력되고, 출력할 때 '-'가 붙는 경우가 많다.

5. USE를 이용해서 default로 동시에 여러 데이터베이스를 사용할 수 있나요? 아니면 한 가지 데이터베이스만 USE를 이용해서 사용하고, 다른 것을 사용하려면 다시 USE를 사용해야 하나요?
▶ USE는 하나의 데이터베이스만 default로 사용함. 두가지를 동시에 USE할 수 없다.

6. 무조건 날짜는 '-'로 구분하고, 시간은 ':'으로 구분하는게 정해져 있나요? 예를들어서 DATE 타입에서 YYYY:MM:DD 로는 입력할 수 없나요?
▶ DATE는 '-'로, TIME은 ':'으로 입력해야 한다. 정해져 있다. 대신 출력할 때 다른 형식으로 나타낼 순 있다.

7. CHAR 과 VARCHAR 이 저장할 수 있는 값의 크기는 동일한가요? 몇인가요? VARCHAR는 최대로 VARCHAR(65,535)까지 설정이 가능한가요?
▶ 동일함. VARCHAR(65,535) 최대값 맞다.

8. 데이터 타입도 표준이라서 모든 DB에 동일하게 적용되나요?
▶ 대부분이 동일하다.

9. DDL, DML, 그외 언어가 SQL 표준 언어라는 말씀이시죠?
▶ SQL 표준이 맞다.

 

10. order by에서 null을 뒤로 뺄때 order by의 is null의 뜻이 무엇인가요? where에서 is null은 그 값들을 선택한다는 뜻일텐데 order by에서 is null도 그것을 선택해서 오름차순으로 한다는 뜻인가요?
▶ 나도 잘 몰라서 메뉴얼을 확인 후 다시 말해주겠다.

11. where continent = 'Asia' or 'Europe';  이런식으로는 안되는 건가요?
▶ 안된다.

12. 별명을 설정할 때 꼭 ' ' 을 붙여야 하나요??
▶ 꼭 안붙여도 된다. 하지만 띄어쓰기가 있을땐 해야 한다. 한글일때도 하는게 좋다.

13. count( )에서 괄호 안 내용의 row수를 세서 알려주겠다는 뜻인가요? 예를 들어 count(price)라면 price 컬럼의 총 row수를 세준다는 뜻인가요?
▶ 해당 조건에 맞는 row의 수를 세주는 것이 맞다.

14. distinct [컬럼1], [컬럼2] 하면 두가지가 합쳐서 중복이 제거된다고 하셨는데, 만약 [컬럼1]만 중복 제거하고 싶으면 어떻게 해야하나요??
▶ 나중에 다시 알려주겠다.

15. 만약에 countrycode로 그룹핑을 했을때, select문에서 count(*)와 count(countrycode)는 동일한가요??
▶ 동일하다.

16. 제가 잘못 알고 있을수도 있는데 쿼리 실행 순서가 group by -> having -> select 순으로 간다고 알고 있습니다. 그렇다면 select 문에서 별칭을 지정해도 이미 having이 먼저 실행됬기에 참조하지 못하지 않나요?
▶ 다음 주에 다시 알려주겠다.

17. 행에 있는 하나의 값만 삭제하려면 어떻게 하나요?
▶ update를 이용할 수 있다.

18. 서브쿼리와 join은 같은 결과를 낼 수 있을 것 같은데 가능한지?
▶ 무엇을 쓰든 가능하다. 대부분의 서브쿼리들은 그냥 inner join에서 테이블을 넣고 사용할 수 있다.
  하지만 inner join에 서브쿼리를 사용할 수도 있다.

19. 스키마란 무엇인가요?
▶ mysql에서 스키마는 '데이터베이스'와 동의어이다.

20. 쿼리문 작성할 때 DML, DDL 등은 대문자로 작성하는 것이 관행이라고 들었습니다.
EX) "SELECT name, age FROM employee WHERE age >20 GROUP BY 1 DESC".
실제 현업에서는 대문자와 소문자를 구분해서 사용하는지, 아니면 그냥 신경쓰지 않고 소문자로 쓰는지가 궁금합니다. 습관을 어떻게 들면 좋을까요?
▶ 가능하면 대문자로 쓰는 연습을 하자. 원래 대문자로 해야 한다.

 

사소하지만 궁금한 점들을 물어볼 수 있었다는 점이 정말 좋았다. 혼자 공부하다보면 호기심이 생기는 것들이 있지 않는가. 

 

3~4주차가 되니 본격적으로 난이도가 올라갔다. 패스트 캠퍼스 SQL 강의에서 다루지 않은 부분들을 접하자 금방 멘붕에 빠져 버렸다. 특히 데이터 모델링 부분의 ERD(Entity Relation Diagram) 그리기, 트랜젝션, 뷰, 수업에선 진도를 따라잡기 힘들었다. 지금 생각해보면 단순 쿼리문 작성을 넘어선 객체의 무결성, 인덱스 등 모델링 파트는 하루 아침에 이해할 수 있는 부분이 아니다. 하지만 후반부 수업에서 모든 내용들을 급하게 다룰려고 한 느낌이 강하게 들었다.

 

그렇지만 이렇게라도 한 번 훑고 넘어가니 익숙한 쿼리문 작성 부분에만 매몰되어 있던 나에게 새로운 자극을 주었다. 개발자로서 데이터 베이스를 공부할 때 쿼리문 작성 못지않게 중요한 부분이 데이터 모델링이란 사실을 깨달을 수 있었다. 해당 수업을 통해서 ERD를 잘 그리는 방법을 배우진 못했지만, 내가 어떤 부분이 취약한지, 앞으로 관심을 가져야 하는 부분이 무엇인지 이해하는데 확실히 도움이 됐다.

 

출처:&nbsp;https://www.momjobgo.com/board/stories/course/1540

 

첫번째 주를 제외하곤 매 주마다 과제가 나왔다. 조건에 해당하는 쿼리문을 작성하는 문제로 이뤄져서 10~15개씩 출제됐다. 과제를 하면서 안다고 오해한 부분들이 실제론 제대로 모르고 있다는 사실을 깨닫게 해줬다.

 

마지막 주 과제에 포함된 데이터 모델링은 나에게 큰 도전이었다. MySQL을 통해 가상의 중고거래 사이트의 데이터 모델링을 ERD로 만드는 것이었다. 분명히 개념적으론 알겠는데 실제로 설계를 해보려니 기본키와 외래키의 관계, 각 엔터티의 연결 등에서 막막함을 느꼈다. 굉장한 좌절감을 느꼈지만, 그래도 끝내 제출을 완료함으로써 4주간의 수업을 수료할 수 있었다.

좋았던 점


(1) 강사의 역량이 좋았다. '조윤희 강사'의 약력에 강남 유명 학원의 강사 이력이 있다. 그래서일까 가르치는 기술에서 연륜이 묻어나왔다. 단순히 현업자인 경우와 강사 경험이 있는 건 강의 능력에 있어서 천지차이다. 학생의 입장을 고려해 가르치는 모습에서 학습 이해가 수월했다.

 

(2) 과제를 통해 여러 쿼리문을 연습해 볼 수 있어서 좋았다.

 

(3) 시간 관리가 확실했다.

 

(4) 나뿐만 아니라 여러 학생들의 수업 참여도가 좋았다. 모두가 수업에 집중하고 있음이 느껴졌고, 그만큼 강사의 열의도 많아진 것 같다.

 

(5) 무엇보다 실시간으로 질문을 할 수 있어서 좋았다.

 

(6) 비용이 무료로 이 정도의 수업을 들을 수 있어 감사했다.

아쉬웠던 점


(1) 후반부 강의 진행이 아쉬웠다. 시간 관계상 어쩔수 없었다만 상대적으로 어려운 개념들을 빠르게 지나가서 이해하기 어려웠다. 분명 중요한 개념일텐데 시간 관계상 맛보기 정도로 넘어간 것이 아쉬웠다. 

 

(2) ERD 그리는 과제가 수업 내용에 비해 너무 어려웠다. 그래서 손 대기가 더 힘들었다. 여러가지 개념들을 훅 던져놓고 알아서 만들어 보라는 식의 과제여서 많이 아쉬웠다.

 

(3) 다음 시간에 알려주겠다는 질문에 대한 답을 끝내 듣지 못했다.

총평


다시 말하지만, 무료로 실시간 강의를 듣고 과제까지 실습해 볼 수 있는 기회라 좋았다. 덕분에 MySQL에 대해 더 익숙해질 수 있었고, SQL을 대하는 마음가짐이 더 편해졌다. 반대로 내 SQL 실력의 한계도 볼 수 있었다. 고급자로 넘어가기 위한 벽이 있음을 느꼈고, 이제 그 벽을 넘기 위해 스스로 노력해야겠다.

 

SQL은 매력적인 프로그램이 언어이다. 내가 원하는 값을 자유자재로 조리할 수 있다는 점이 참 흥미롭다. 다만 쿼리문 작성뿐만 아니라 DBMS(DataBase Management System)에 대한 심도 깊은 이론 공부도 함께 해야한다. 결국 백엔드 개발자는 '데이터'를 어떻게 관리할 것인가를 끊임없이 고민하는 사람인 것 같다.

 

추후 보충해야 할 부분


- 데이터 모델링

- ERD

- 인덱스 (유니크 인덱스, duplicate index, 다중 컬럼 인덱스, 클러스터드 인덱스)

- 정규화 4단계

- Auto increment

- 트랜젝션

- 자동 커밋

- 뷰

- 저장 프로시저(stored procedure)

 

https://www.momjobgo.com/

 

맘잡고 - 내일을 만나다

내 브랜드 가르치며 인정 받고 성공을 이루는 곳, 이 모든 인프라를 누릴 수 있어요.

www.momjobgo.com