본문 바로가기
잡담/웹개발(SI) 일지

웹개발 학원에서 DB는 어떻게 공부해야 되나

by flatsun 2021. 8. 3.
반응형

대부분의 웹개발 업체에서

면접 시 DB 관련 내용을 물어보기는 하지만

 

현재 웹개발은 비전공은 기본에

아는 지식이 별로 없는 사람이 수두룩해서

면접관들도 큰 기대를 하지 않기 때문에

 

오라클과 MySQL 중 뭘로 입문하는 게 좋을까?

웹개발 학원을 다니다 보면 DB는 오라클 or MySQL 두개로 나뉘어져 있는 것이 보일텐데 자바 VS 파이썬 둘 중에 뭘 배워야 하나? 웹서핑을 하다 보면 자바를 까는 글을 심심찮게 볼 수 있는데 자바가

flatsun.tistory.com

Oracle이 됐건 MySQL이 됐건 간에

하나를 익히면 반대편도

사용하기 크게 어렵지 않기 때문에

아래 기술을 익히면 면접 시 엄청난 도움이 되는데

 

일단 취직을 위한 '최소' 마지노선은

DB는 Select Insert Update Delete 

네 개를 볼펜으로 쓸 수 있을 정도에

테이블 관련 지식이면 충분하고

 

여기에 가산점을 받으려면

Switch Case / 서브쿼리(Subquery) / JOIN(ANSI 권장)

각종 함수(오라클 - nvl, decode MySQL - IFNULL, IF)

등을 어떻게 활용하는 지 알고 있으면

거의 80~90점이라고 보면 된다

 

마지막으로 뭔가 본인이

공부 열심히 했다는 걸 보여주겠다 싶으면

함수(Function) / 프로시저(Procedure)

까지 직접 작성하고 호출할 수 있으면

100점이라고 보면 되는데

 

어 몇개 안되네? 싶지만

처음 공부하다 보면

기본 지식이 하나도 없기 때문에

만만치가 않다는 걸 깨닫게 될거다

 

먼저 Select Insert Update Delete 를 하기 전에

테이블이 있어야 그걸 하던가 말던가 할텐데

 

Toad나 DBeaver 등 SQL 툴에서

테이블 생성, 수정 기능을 지원하기 때문에

실제 업무에서는 CREATE/ALTER TABLE..

이러고 있을 필요가 없지만

 

면접에서는 SQL 툴을 사용할 수 없기 때문에

어떻게 작성하는 지 정도는 알아야 하고

char, varchar2, number, date

NOT NULL, PK, FK, Default

정도는 테이블 생성 시 어떤 기능을 하는지 알아야 한다

 

테이블 관련해서 많이 불어보는게

char / varchar2 가 뭐가 다르죠?

이렇게 물어보는데 말문 막혀서

어.. 이러고 있으면 안되고

 

char(5) varchar2(5)

이렇게 컬럼에 사이즈를 주고

각 컬럼에 'A'를 넣었다고 하면

 

char의 경우에는 'A    '

이런 식으로 들어가지만

varchar2의 경우에는 'A'

이렇게 들어간다

 

테이블 컬럼 관련해서는 이거 외에는

딱히 물어볼 게 없기 때문에

위 내용만 이해하고 있으면 되고

 

그리고 4 종류의 쿼리에 들어가는

WHERE / GROUP BY / HAVING / ORDER BY

를 어떻게 사용하는지 알면 기본은 된거다

반응형

다음은 심화 단계인데

Switch Case / 각종 함수들은

간단하고 DB 별로 차이가 좀 있으므로

하루 이틀 시간을 내면

웬만한 건 다 대비할 수 있는데

 

문제는 서브쿼리(SubQuery)와 JOIN인데

이게 업무를 해본 사람한테는 이게 어렵다고?

싶지만 막 배우는 사람이나 신규 입사자한테는

거의 저승사자에 가깝기 때문에

대부분이 여기서 죽어나는데

 

개념은 서브쿼리는 쿼리 안에 쿼리를 하나 더 만들어서

결과값을 가져온 뒤 바깥의 쿼리에서 사용하는 식인데

 

실제 업무에서 원하는 값을 조회하기 위해

서브쿼리를 몇중으로 해서

최종 결과를 얻는 경우가 많기 때문에

 

몇중으로 한번 만들어 보세요

이런 건 솔직히 어렵고

서브쿼리가 뭔지 / 어떻게 사용하는 건지

서브쿼리를 봤을 때 적어도 읽을 수는 있어야 한다

 

다음으로 JOIN은

무조건 Oracle / MySQL 에서 지원하는

JOIN 방식을 사용할 것이 아니라

ANSI 방식을 사용할 것을 권장하는데

 

ANSI는 모든 DB에서 통하는 방식이기 때문에

ANSI를 이용한 JOIN을 배워두면

어느 DB에서든 JOIN이 가능해진다

 

그리고 INNER LEFT RIGHT FULL 

이렇게 4가지의 JOIN이 있는데

 

실제 업무에서는 INNER와 LEFT만 사용한다

RIGHT는 LEFT와 똑같은데 기준만 뒤집은 거고

FULL은 단 한번도 본 적이 없다

이거 진짜 쓰긴 하나?

 

개념은 알아두되 실제 사용법은

INNER LEFT 를 위주로 연습하면 되겠다

 

이제 마지막 고득점을 위한

함수(FUNCTION) / 프로시저(PROCEDURE)

생성 및 호출방법인데

 

함수는 기존에 존재하는 NVL IFNULL 등을

내가 직접 만들어서 파라미터를 던져주면

값을 계산해서 결과를 RETURN 해주는 과정인데

이걸 실제 만드는 것 부터 호출하는 것 까지 해보면 되고

 

프로시저의 경우에는

값을 넣고 호출했을 경우 쿼리를 수행하게 되는데

실제 예제를 보면 파라미터를 넣으면

그걸 가지고 안에서

INSERT, UPDATE, DELETE 쿼리를 수행하게 된다

 

말로는 이해가 잘 안되겠지만

직접 프로시저를 만들어 보고

 

INSERT / UPDATE / DELETE 쿼리를 넣어 작성한 뒤

프로시저를 호출해 보면 단박에 감이 올거다

 

함수는 값을 넣고 돌리면 계산한 결과를 주는거고

프로시저는 값을 넣으면

그걸 가지고 쿼리를 수행하게 되는거다

 

DB에는 이것 외에도 다양한 기능이 있지만

신입 면접이라고 치면

함수하고 프로시저 호출까지 되면

무조건 만점이라고 보면 된다

 

하지만 고득점도 고득점이지만

결국 DB는 SELECT가 가장 중요한 만큼

각종 조건이 걸려있을 때

어떻게 조회를 하는지가 가장 중요한데

 

https://leetcode.com/problemset/database/

 

위 링크의 leetcode 이런데 가보면

DB 연습문제도 제공하기 때문에

가서 문제 열심히 풀어보면 엄청난 도움이 된다

(영어 못읽으면 파파고를 쓰면 된다)

 

이론보다는 쿼리를 계속 쳐보면서 감을 잡아놔야

면접에서도 말문 막히지 않고

술술 나오기 때문에

 

이론보다는 실제 문제를 풀어보며

 감각을 익혀보는 것을 권장한다

반응형

댓글