첫 면접 질문

박성호·2024년 3월 6일

오늘 처음으로 면접을 보고 왔고 면접에서 나온 질문을 복기 하면서 제가 과연 얼마나 잘 대답했나를 상기시켜보며 복습 하는 시간을 가져 보려 합니다.

DB에서의 inner join, left outer join, full outer join procedure, trigger 특징에 대해 설명하는 거였습니다.
제가 했던 대답과 인터넷에 정리된 내용과 비교 해보겠습니다.
사실 대답을 잘했다고는 생각을 안합니다. 첫면접이다 보니 긴장을 많이 했던점과 sql에 관한질문이 나올거라는 예상을 못해서 생각나는 대로 대답을 했던것 같습니다.

inner join : 두개에 테이블을 결합할때 primary key 와 foreign key를 대조하여 해당하는 값이 같을때만 불러오며 일치하지 않는 행은 불러오지 않는다

left outer join : 두개의 테이블을 결합할때 왼쪽에 테이블에 모든 행은 포함하고 오른쪽 테이블과 일피하는 행이 있을 경우 해당행을 가져오고 일치하는 행이 없으면 null로 표시합니다.

full join : 사실 이걸 들었을때 가장 당황했습니다 mysql에 대해 배울떄 full join에 대해 들어본적이 없었는데 처음에는 제가 잊었다고 생각했는데 그게 아니라 mysql에서는 이런 기능을 union함수를 사용하여 대체해서 사용하더군요. 하지만 union애서도 완전히 대체는 어려운 점이 있고, MySQL에서는 Left Join과 Right Join을 조합하여 Full Outer Join과 유사한 결과를 얻을 수 있습니다.
기능으로는 두 테이블을 합치는데 단순히 쿼리에 결과를 합칩니다. 하지만 union all도 존재하는데 두개에 차이는 union은 중복된 열(ROW)을 제거 하지만 union all은 중복을 제거하지 않습니다. 두개의 결과를 가장 잘보여주는 사진 결과를 발견해서 같이 올려봅니다.

employees_1 테이블

employess_2 테이블

UNION (DISTINCT)

UNION ALL

출처 : https://jmkim.tistory.com/50

그리고 종합적으로 이걸 전체적으로 정리한 그림입니다.

집합으로 기억하면 좀더 이해하기 쉬울거라고 생각합니다.

출처: https://medium.com/@iammanolov98/mastering-sql-joins-coding-interview-preparation-innerjoin-e96bef58afc2

다음으로 정리할 내용은 procedure와 trigger 입니다.

PROCEDURE

저장 프로시저(Stored Procedure)는 미리 데이터베이스 서버에 일련의 SQL 명령을 해 놓고, 프로시저를 실행하여 SQL 명령을 간단하게 실행할 수 있도록 할 수 있다. 하나의 프로시저로 여러 SQL문을 실행이 가능하다. 프로시저 안에는 SQL 문장 뿐 아니라 if문 while문 등의 제어 명령이나 반복 명령을 기술할 수 있기 때문에 일종의 프로그램도 만들 수 있다.

함수(Function)와의 차이점
함수 : 클라이언트에서 처리하며, 리턴 값이 단 하나이고 꼭 값을 가져와야 한다.
프로시저 : 서버로 보내 처리하며, 리턴값을 여러개 반환 가능하다.

trigger

트리거는 테이블에 작성한다. 테이블에 이벤트가 발생할때 (update, insert, delete) 트리거가 설정되어 있으면, 트리거의 SQL 문장이 자동으로 실행 된다.
사용자가 직접 실행 할 수 없으며 테이블에 이벤트가 일어나야 자동으로 실행되며 매개 변수를 사용할 수 없다.

이렇게 정리하니 예전에 했던 프로젝트도 개선이 가능하지 않을까 하는 생각이들고 한번더 공부를 해서 정리할 수 있는 시간이었습니다. 부족한 글이지만 읽어주셔서 감사합니다.

profile
꾸준히 성장하는 개발자

0개의 댓글