제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
면접 리스트
DDL/DML/DCL에 대해 설명해주세요.
DDL(Data Definition Language)은 데이터베이스 구조를 정의하거나 변경하는 데 사용되며, CREATE, ALTER, DROP과 같은 명령어가 포함됩니다.
DML(Data Manipulation Language)은 데이터를 조회하거나 수정, 삭제, 삽입하는 데 사용되며, SELECT, INSERT, UPDATE, DELETE 등이 있습니다.
DCL(Data Control Language)은 데이터베이스 접근 권한을 제어하는 명령으로, GRANT와 REVOKE가 대표적입니다.
DROP, TRUNCATE, DELETE에 각각에 대해 설명해주세요. 어떤차이가 있나요?
DROP은 테이블 자체를 삭제하며, 구조와 데이터가 모두 제거됩니다. 삭제 후에는 복구가 불가능하며, 테이블과 관련된 인덱스 및 참조 관계도 삭제됩니다.
TRUNCATE는 테이블의 모든 데이터를 삭제하지만, 테이블 구조는 유지됩니다. 로그 기록이 간소화되므로 대량 데이터 삭제에 효율적입니다.
DELETE는 데이터를 행 단위로 삭제하며, WHERE 조건을 사용할 수 있어 특정 데이터만 삭제할 수 있습니다. DELETE는 로그 기록을 남기므로 트랜잭션을 통해 롤백이 가능합니다.
SQL Injection 공격이 무엇인지 어떻게 공격을 예방할 수 있는지 설명해주세요.
SQL Injection은 사용자가 입력한 데이터를 SQL 쿼리에 삽입하는 과정에서 악의적인 SQL 코드를 주입하여 데이터베이스를 공격하는 기법입니다. 이를 통해 데이터 유출, 변경, 삭제 등이 가능하며, 심각한 보안 위협이 됩니다.
이를 예방하기 위해, 첫째, Prepared Statement나 Parameterized Query를 사용하여 쿼리와 데이터를 분리합니다.
둘째, 입력값에 대한 유효성 검사를 철저히 수행하고, 셋째, 데이터베이스 계정을 최소 권한 원칙에 따라 설정합니다.
인덱스에 대해서 설명해주세요.
인덱스는 테이블의 데이터를 빠르게 조회하기 위해 사용하는 데이터 구조입니다. 책의 목차와 유사하며, 특정 열의 값을 기준으로 데이터의 위치를 빠르게 찾을 수 있습니다. 인덱스를 사용하면 SELECT와 같은 읽기 작업의 성능이 크게 향상됩니다. 그러나, INSERT, UPDATE, DELETE와 같은 쓰기 작업에는 오버헤드가 발생할 수 있습니다.
인덱스의 동작 방식에 대해 설명해주세요
MySQL 기준으로 인덱스는 일반적으로 B-Tree 구조를 사용하여 동작합니다. B-Tree는 데이터를 균형 있게 저장하여 탐색, 삽입, 삭제 시 일정한 성능을 보장합니다. 데이터 검색 시, 루트 노드에서부터 시작해 리프 노드까지 탐색하며, 해당 키 값을 빠르게 찾습니다. 또한, 자주 사용되는 데이터에 대해 캐싱을 통해 접근 속도를 더 향상시킵니다.
클러스터링 인덱스에 대해서 설명해주세요.
클러스터링 인덱스는 테이블의 데이터가 인덱스 키 값에 따라 물리적으로 정렬되어 저장되는 방식입니다. 기본 키가 클러스터링 인덱스로 사용되는 경우가 많으며, 동일한 키 값을 가진 데이터가 인접하게 저장됩니다. 이는 범위 검색 시 높은 성능을 발휘하지만, 데이터 삽입이나 업데이트 시 정렬을 유지해야 하므로 비용이 증가할 수 있습니다.
'기술면접 > 데이터베이스' 카테고리의 다른 글
[기술면접] 데이터베이스 5 (0) | 2024.12.02 |
---|---|
[기술면접] 데이터베이스 4 (0) | 2024.12.02 |
[기술면접] 데이터베이스 2 (0) | 2024.12.02 |
[기술면접] 데이터베이스 1 (3) | 2024.12.01 |