
중요도가 높은 질문들 - ⭐
실무 면접을 여러 번 진행해보면서 받아본 질문들 - ✔️
(프론트엔드 직무를 희망하면서 SQL 관련 질문을 받아볼 경우는 많진 않지만, 웹 개발자 직무를 희망하면서 모르면 아쉬울 부분이다.)
1. DBMS란?
- 데이터베이스 관리 시스템을 의미, 데이터 정보를 효율적, 효과적으로 구성해 복원 및 검색에 사용할 수 있게 한 응용 프로그램 모음.
2. RDBMS란?
- DB에 별도의 테이블에 저장된 데이터 모델을 기반으로하며 공통 열의 사용과 관련됨. SQL을 사용해 데이터에 쉽게 접근 가능
3. DBMS의 장점?
- 구조적으로 저장되는 데이터, 중복성의 제어 가능
- 데이터의 유효성 검사, DB에 대한 무단 액세스에 대한 제한 가능
- 데이터의 백업 및 복구 기능
- 사용자 인터페이스
4. DB내의 관계의 종류 ⭐
1:1
: 한 테이블은 다른 테이블과 관계, PK는 다른 레코드와 관련 X
1:N
: 한 테이블은 PK 및 FK 관계가 있는 다른 테이블과 관계
N:N
: 두 테이블의 각 레코드는 다른 테이블의 여러 레코드와 관련
5. DDL, DML, DCL 이란? ⭐
DDL
: 데이터베이스 구조에 대한 정의, 수행된 변경사항이 영구적 저장
DML
: 자료 검색, 삽입, 삭제, 갱신, 삭제
SELECT
, INSERT
, UPDATE
, DELETE
DCL
: 데이터에 대해 무결성 유지, 병행 수행 제어, 접근 제어 등
COMMIT
, ROLLBACK
, GRANT
, REVOKE
6. SELECT 쿼리의 수행 순서?
FROM
, ON
, JOIN
→ WHERE
, GROUP BY
, HAVING
→ SELECT
→ DISTINCT
→ ORDER BY
→ LIMIT
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 변경 시, 이상현상이 발생하는 문제점을 해결할 수 있다.
- 구조 확장 시, 구조를 변경하지 않거나 일부만 변경해도 된다.
- 단점
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
: 전체 데이터를 한번에 삭제, 테이블 용량이 줄어들고 인덱스 등도 삭제된다.
DROP
: 테이블 자체를 완전히 삭제
20. HAVING과 WHERE의 차이
HAVING
: 그룹을 필터링
- 집계 함수(
COUNT, SUM, AVG, MAX, MIN
)등 함께 사용 가능
- 그룹화 또는 집계가 발생한 후 필터링하는데 사용
WHERE
: 개별 형을 필터링
21. JOIN에서 ON과 WHERE의 차이
ON
이 WHERE
보다 먼저 실행되어 JOIN
을 하기 전에 필터링을 하고 WHERE
은 JOIN
을 한 후 필터링을 합니다.
22. 데이터베이스 무결성이란?
- DB에 저장된 데이터 값과 그것의 실제값이 일치하는 정확성
- 개체 무결성 :
PK
의 속성은 NULL
이나 중복값을 가질 수 없다.
- 참조 무결성 :
FK
의 값은 NULL
이거나 참조 테이블의 PK
값 이어야 한다.