기본
Q. Inner Join과 Outer Join의 차이를 설명해주세요.
Inner Join과 Outer Join의 주요한 차이점은 데이터를 결합하는 방식에 있습니다. Inner Join은 두 테이블 간의 교집합을 반환하는데, 즉 양쪽 테이블에서 매칭되는 데이터만을 가져옵니다. 반면 Outer Join은 두 테이블의 합집합을 반환하며, 한쪽 테이블에만 데이터가 있어도 결과에 포함됩니다. Outer Join은 기준 테이블에 따라 Left Outer Join, Right Outer Join, Full Outer Join으로 구분됩니다.
Q. Group By에 대해 설명해주세요.
Group By는 데이터를 특정 컬럼을 기준으로 그룹화하여 집계하는 SQL 명령어입니다. 주로 Count, Sum, Avg, Max, Min 등의 집계 함수와 함께 사용되며, Distinct처럼 중복된 데이터를 제거하는 특성을 가지고 있습니다. 이를 통해 데이터를 원하는 기준으로 분류하고 분석할 수 있습니다.
Q. Delete, Truncate, Drop의 차이를 설명해주세요.
세 명령어는 데이터를 삭제하는 방식과 범위에서 차이가 있습니다. Delete는 특정 데이터만 선택적으로 삭제할 수 있고, 삭제 후에도 복구가 가능하지만 테이블의 용량은 변하지 않습니다. Truncate는 테이블의 모든 데이터를 한 번에 삭제하며, 테이블 용량이 줄어들고 인덱스도 함께 삭제되지만, 복구는 불가능합니다. Drop은 가장 강력한 삭제 명령어로, 테이블 자체를 완전히 삭제하며 공간, 인덱스, 객체 등 모든 것이 제거되고 복구가 불가능합니다.
Q. Union과 Union All의 차이에 대해 설명해주세요.
Union과 Union All은 두 개 이상의 쿼리 결과를 하나로 합치는 연산자입니다. Union은 중복된 행을 제거하고 결과를 반환하는 반면, Union All은 중복을 제거하지 않고 모든 행을 그대로 반환합니다. 따라서 Union All이 Union보다 실행 속도가 더 빠르지만, 중복된 데이터가 필요하지 않은 경우에는 Union을 사용하는 것이 더 적절합니다.
Q. Having과 Where의 차이점을 설명해주세요.
Where와 Having은 모두 조건절이지만 사용되는 시점과 목적이 다릅니다. Where는 개별 행에 대한 조건을 지정하며 그룹화하기 전에 실행됩니다. 반면 Having은 Group By로 그룹화된 이후의 결과에 대한 조건을 지정할 때 사용됩니다. 예를 들어, 부서별 평균 급여가 3000 이상인 부서를 찾을 때는 Having을 사용해야 합니다.
Last updated