웹 개발자 실무 면접 준비 - SQL

조민수·2024년 2월 28일
0

실무면접

목록 보기
7/10

중요도가 높은 질문들 - ⭐

실무 면접을 여러 번 진행해보면서 받아본 질문들 - ✔️

(프론트엔드 직무를 희망하면서 SQL 관련 질문을 받아볼 경우는 많진 않지만, 웹 개발자 직무를 희망하면서 모르면 아쉬울 부분이다.)


1. DBMS란?

  • 데이터베이스 관리 시스템을 의미, 데이터 정보를 효율적, 효과적으로 구성해 복원 및 검색에 사용할 수 있게 한 응용 프로그램 모음.
    • MySQL, MariaDB, Oracle 등

2. RDBMS란?

  • DB에 별도의 테이블에 저장된 데이터 모델을 기반으로하며 공통 열의 사용과 관련됨. SQL을 사용해 데이터에 쉽게 접근 가능

3. DBMS의 장점?

  • 구조적으로 저장되는 데이터, 중복성의 제어 가능
  • 데이터의 유효성 검사, DB에 대한 무단 액세스에 대한 제한 가능
  • 데이터의 백업 및 복구 기능
  • 사용자 인터페이스

4. DB내의 관계의 종류 ⭐

  • 1:1 : 한 테이블은 다른 테이블과 관계, PK는 다른 레코드와 관련 X
  • 1:N : 한 테이블은 PK 및 FK 관계가 있는 다른 테이블과 관계
  • N:N : 두 테이블의 각 레코드는 다른 테이블의 여러 레코드와 관련

5. DDL, DML, DCL 이란? ⭐

  • DDL : 데이터베이스 구조에 대한 정의, 수행된 변경사항이 영구적 저장
    • ALTER, CREATE, DROP
  • DML : 자료 검색, 삽입, 삭제, 갱신, 삭제
    • SELECT, INSERT, UPDATE, DELETE
  • DCL : 데이터에 대해 무결성 유지, 병행 수행 제어, 접근 제어 등
    • COMMIT, ROLLBACK, GRANT, REVOKE

6. SELECT 쿼리의 수행 순서?

  • FROM, ON, JOINWHERE, GROUP BY, HAVINGSELECTDISTINCTORDER BYLIMIT

7. 트리거란?

  • 특정 테이블에 대한 이벤트에 반응해 INSERT, DELETE와 같은 DML이 수행되면, DB에서 자동으로 동작하도록 작성된 프로그램
  • 사용자의 직접호출이 아닌 DB에서 자동적으로 호출

8. Index란? ⭐

  • 테이블을 검색하는 방법 중 하나로, FTS와 달리 인덱스를 통해 데이터에 접근하는 방법
  • 늘 정렬된 상태를 유지하기 때문에 값 검색에 빠르지만, 값의 추가, 삭제, 수정 등의 작업에선 오히려 느린 실행 속도를 보인다.
    • 저장 성능을 희생하고, 검색 속도를 높이는 기능

※ 관리방식

  • B-Tree : O(log2N)
  • 해시테이블 : O(1)

9. 정규화(Normalization)란? ⭐ ✔️

  • 데이터베이스에서 중복 데이터를 제거하는 과정
    • 저장 공간을 절약할 수 있다
  • 제1 정규형
    • 테이블의 컬럼이 원자 값을 갖도록 분해
  • 제2 정규형
    • PK가 아닌 속성이 PK에 완전 함수 종속이도록 분해
  • 제3 정규형
    • 이행적 함수 종속을 없애도록 분해

이행적 함수 종속
A → B, B → C가 성립할 때, A → C가 성립

  • 정규화의 장점
    • DB 변경 시, 이상현상이 발생하는 문제점을 해결할 수 있다.
    • 구조 확장 시, 구조를 변경하지 않거나 일부만 변경해도 된다.
  • 단점
    • 릴레이션 간 JOIN 연산이 많아 진다.

10. 역정규화란? ✔️

  • 정규화 시, JOIN 연산이 많아져 성능 저하의 우려가 있는데 DB의 전반적인 성능을 향상시키기 위해 사용.

11. 이상 현상이란? ⭐

  • 데이터를 삽입, 삭제, 수정 시에 생기는 논리적 오류

1. 삽입 이상

  • 자료 삽입 시, 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상

2. 갱신 이상

  • 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상

3. 삭제 이상

  • 어떤 데이터 삭제 시, 의도치 않은 데이터까지 삭제되어버리는 현상

12. View란?

  • 허용된 데이터를 제한적으로 보여주기 위한 가상 테이블
  • 장점
    • 데이터 저장에 대한 리소스를 낭비하지 않음
    • 삽입, 업데이트, 삭제 등의 명령이 없으므로 데이터 액세스가 제한됨
  • 단점
    • 큰 테이블에 대한 뷰를 만들 때 더 많은 메모리가 사용됨

13. SQL Injection이란?

  • 공격자가 악의적인 의도를 갖는 SQL 구문을 삽입해 DB를 비정상적으로 조작하는 공격 기법
    • 입력값 검증을 통해 유효값을 검증해 방지한다.

14. RDBMS vs NoSQL ⭐

RDBMS

  • 스키마에 맞춰 데이터를 관리하므로, 데이터의 정합성을 보장
  • 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하된다.

NoSQL

  • Key-Value형태로 데이터를 관리해 데이터 관리가 쉽다.
  • 데이터 중복이 발생할 수 있다.
  • 명확한 데이터 구조를 보장하지 않아 데이터 구조 결정이 어렵다.

15. 트랜잭션이란? ⭐

  • 트랜잭션은 작업의 완전성을 보장해줍니다.
  • 작업의 일부만 적용되는 현상이 발생하지 않는다.
  • 특성(ACID)
    • 원자성 : 작업이 모두 반영되던지 아니면 전혀 되지 않아야 한다.
    • 일관성 : 실행이 완료되면 언제나 일관성 있는 상태를 유지해야 한다.
    • 독립성 : 둘 이상의 트랜잭션이 동시에 실행되어 서로의 연산에 끼어들 수 없다.
    • 영속성 : 완료된 결과는 영구적으로 반영되어야 한다.

16. Optimizer란?

  • SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해주는 DBMS 내부의 핵심 엔진

17. Inner Join과 Outer Join

  • Inner Join : 서로 연관된 내용만 검색하는 조인 방법
  • Outer Join : 한 쪽에는 데이터가 있고 다른 한 쪽에 없을 때, 있는 쪽의 내용을 전부 출력하는 방법

18. GROUP BY이란?

  • 특정 컬럼을 기준으로 연산한 결과를 집계 키로 정의해 그룹을 짓는 역할
  • 집합 연산자
    • COUNT, SUM, AVG, MAX, MIN
    • DISTINCT : 중복 제거

19. DELETE, TRUNCATE, DROP의 차이

  • DELETE : 데이터는 지우지만 테이블 용량은 줄어들지 않고 원하는 데이터만 골라서 지울 수 있다.
    • 삭제 후 되돌릴 수 있다.
  • TRUNCATE : 전체 데이터를 한번에 삭제, 테이블 용량이 줄어들고 인덱스 등도 삭제된다.
    • 테이블 삭제 X, 삭제 후 되돌릴 수 없다.
  • DROP : 테이블 자체를 완전히 삭제
    • 삭제 후 되돌릴 수 없다.

20. HAVING과 WHERE의 차이

  • HAVING : 그룹을 필터링
    • 집계 함수(COUNT, SUM, AVG, MAX, MIN)등 함께 사용 가능
    • 그룹화 또는 집계가 발생한 후 필터링하는데 사용
  • WHERE : 개별 형을 필터링
    • 그룹화 또는 집계 발생 전 필터링하는데 사용

21. JOIN에서 ON과 WHERE의 차이

  • ONWHERE보다 먼저 실행되어 JOIN을 하기 전에 필터링을 하고 WHEREJOIN을 한 후 필터링을 합니다.

22. 데이터베이스 무결성이란?

  • DB에 저장된 데이터 값과 그것의 실제값이 일치하는 정확성
    • 개체 무결성 : PK의 속성은 NULL이나 중복값을 가질 수 없다.
    • 참조 무결성 : FK의 값은 NULL이거나 참조 테이블의 PK값 이어야 한다.
profile
멈춤에 두려움을 느끼는 것

0개의 댓글

관련 채용 정보