SQL 면접 질문 정리
- 데이터베이스
- 쿼리문 순서
- 데이터 베이스 언어
- 스키마(Schema)
- RDBMS vs NOSQL
- Join(조인)의 정의와 종류
- DROP, Truncate, delete 차이점
- 데이터베이스에서 다양한 유형의 관계
데이터베이스
- 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 말한다.
쿼리문 순서
- SELECT -> FROM -> WHERE -> GROUP BY -> ORDER BY
데이터 베이스 언어
- 데이터 베이스 언어에는 세 가지 종류가 있습니다.
- 정의어(DDL : Data Definition Language) : 데이터 베이스 구조를 정의, 삭제, 수정 하는 언어(create, alter, drop)
- 조작어(DML : Data Manipulation Language) : 자료 검색, 삽입, 갱신, 삭제를 위한 언어(select, insert, update, delete)
- 제어어(DCL : Data Control Language) : 데이터에 대해 무결성, 병행 수행, 제어, 보호, 관리를 위한 언어(commit, rollback, grant, revoke)
스키마(Schema)
- 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것.
RDBMS vs NOSQL
- RDBMS : 2차원의 행과 열로 데이터의 관계를 관리하는 데이터베이스
- 장점: 스키마에 맞추어 데이터를 관리하기 때문에 데이터의 정합성을 보장할 수 있다.
단점: 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며, 수평적 확장이 어렵다.
- NoSQL
- RDBMS가 비대해짐에 따라 관계가 복잡해져, 이를 극복하기 위해 등장하게 된 데이터베이스
- 장점: NOSQL은 스키마 없이 Key–Value 형태로 데이터를 관리하여 좀 더 자유롭게 데이터를 관리할 수 있다.
- 단점: 중복된 데이터가 추가 가능하여, 이에 대한 관리가 필요하다.
Join(조인)의 정의와 종류
정의 : 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 입니다.
- Inner Join : 두 개 이상의 테이블에서 교집합만을 추출
- Left Join : 두 개 이상의 테이블에서 from에 해당하는 부분을 추출
- Outer Join : 두 개 이상의 테이블에서 모든 테이블에 해당하는 부분을 추출
DROP, Truncate, delete 차이점
- DELETE 데이터는 지워지지만 테이블 용량은 줄어들지 않으며 원하는 데이터만 지울 수 있습니다. 삭제 후 Rollback이 가능합니다.
- TRUNCATE 명령어는 테이블의 용량이 줄어들며 인덱스 등 모두 삭제가 됩니다. 테이블은 삭제가 되지 않으며 데이터만 삭제가 됩니다. 삭제 후 Rollback이 되지 않습니다.
- DROP 테이블 전체를 삭제합니다. 삭제 후 Rollback이 되지 않습니다.
데이터베이스에서 다양한 유형의 관계
- 1:1(일대일) : 어느 엔티티 쪽에서 상대 엔티티와 반드시 다네 하나의 관계를 가지는것을 말합니다.
- 1:N(일대다) : 한 쪽 엔티티가 관계를 맺은 엔티티쪽의 여러 객체를 가질 수 있는 것을 말합니다.
- N:M(다대다) : 관계를 가진 양쪽 엔티티 모두에서 1:N관계를 가지는 것을 말합니다.