💡 DELETE, TRUNCATE, DROP의 차이를 설명해 주세요.
DELETE는 테이블에서 특정 레코드(행)들을 삭제합니다. 이때, 테이블의 구조나 스키마는 그대로 유지됩니다. 또한 트랜잭션을 사용할 경우 롤백을 통해 삭제 작업을 취소할 수 있습니다.
TRUNCATE는 테이블의 모든 레코드를 한 번에 삭제합니다. DELETE보다 빠른 속도로 작동하며, 테이블의 스키마는 그대로 유지됩니다. 하지만 롤백이 불가능합니다.
DROP은 테이블 자체(객체와 관련된 모든 것)를 완전히 삭제하고, 롤백이 불가능합니다.
💡 group by의 역할에 대해 설명해 주세요.
GROUP BY 절은 SQL에서 데이터를 특정 열 또는 열의 조합을 기준으로 그룹화하여 집계 함수를 사용해 각 그룹별로 요약된 정보를 생성하는 역할을 합니다. 이를 통해 데이터의 패턴과 통계적 정보를 파악할 수 있습니다.
💡 트랜잭션에 대해서 설명해 주세요.
트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위를 나타내는 개념입니다. 이 작업 단위는 하나 이상의 SQL 쿼리로 구성되며, 데이터베이스의 일관성과 무결성을 유지하기 위해 중요한 역할을 합니다.
💡 ACID에 대해서 설명해 주세요.
ACID는 데이터베이스 트랜잭션의 특성을 나타내는 개념으로, 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 네 가지 특성으로 이루어져 있습니다.
원자성(Atomicity)은 트랜잭션 내의 모든 작업이 성공하거나 전혀 수행되지 않음을 보장하며,
일관성(Consistency)은 트랜잭션이 데이터베이스를 항상 일관된 상태로 유지한다는 것을 의미합니다.
고립성(Isolation)은 여러 개의 트랜잭션이 동시에 실행될 때, 한 트랜잭션이 다른 트랜잭션에 영향을 주지 않도록 보장하며,
지속성(Durability)은 트랜잭션이 성공적으로 완료되면, 그 결과가 영구적으로 유지됨을 의미합니다.
ACID는 데이터베이스 시스템에서 데이터 무결성과 안전성을 보장하기 위한 중요한 원칙이며, 트랜잭션의 신뢰성을 확보하는 데 중요한 역할을 합니다.
💡 Index에 대해 설명해 주세요.
Index는 데이터베이스에서 데이터 검색 속도를 높이기 위한 도구입니다.
특정 열에 대한 정렬된 복제본으로, 데이터베이스 엔진이 데이터 검색을 빠르게 처리할 수 있도록 도와줍니다.
주로 WHERE 절에서 조건 검색 시에 사용되며, 데이터의 유일성(unique)을 보장하거나 성능을 향상시키는 데 활용됩니다.
그러나 Index는 저장 공간을 차지하며 데이터 업데이트 작업을 복잡하게 만들 수 있어 모든 열에 Index를 생성하는 것은 권장되지 않습니다.