1. java jdbc의 statement와 prepareStatement의 차이점은?
    1. statement는 동적 쿼리를 날리기 위해 사용된다
    2. prepareStatement는 파라미터화된 쿼리를 사용하며 클라이언트에서 쿼리 AST 트리를 캐싱 가능하다
  2. 트랜잭션이란?
    1. 데이터베이스 처리의 기본 단위. 하나의 논리적인 작업 단위
    2. Atomicity: 모두 수행되거나 모두 수행되지 않는다.
    3. Consistency: 트랜잭션 수행 후에는 데이터의 일관성을 보장한다.
    4. Isolation: 트랜잭션은 서로 독립적이다. 여러 트랜잭션이 수행되도 서로 간의 영향을 주지 않음
    5. Durability: 트랜잭션이 완료되면 데이터는 지속된다.
  3. DBMS?
    1. 데이터베이스 관리 시스템, 다수의 사용자가 데이터베이스 내의 데이터를 접근/관리 가능하게 하는 시스템
  4. DB의 View란?
    1. 허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서부터 유도된 테이블
    2. 뷰에 나타나지 않은 데이터 보호 가능 + 편의성, 권한 관리
  5. DB 정규화란?
    1. 중복을 최대한 줄이고, 데이터를 구조화 하여 불필요한 데이터를 제거하고 데이터를 논리적으로 저장하여 이상 현상이 일어나지 않도록 하는 것입니다.
    2. 이상 현상 : 릴레이션에서 일부 속성들의 종속으로 인해 데이터 중복이 발생하는 현상
  6. 유니온 vs 유니온 all 차이
    1. distinct의 적용 여부 차이 by mySql.
  7. mysql storage engine 종류
    1. MEM, InnoDb, MyISAM, CSV
  8. 조인의 종류 및 방법(Nested Loop , Hash Join)
    1. Nested Loop: 드라이빙 테이블의 한 로우와 매칭되는 조건을 가진 행을 드리븐 테이블에서 찾는 방식. 2중 For 문으로 볼 수 있다
    2. Hash Join: 상대적으로 큰 데이터 셋을 조인하기 위한 방식. 조인 키 컬럼의 해시함수의 결과를 이용하여 조인하는 방식. 드리븐 테이블의 풀 스캔에 유리
      1. 드라이빙(빌드) 테이블의 조건을 해쉬화하여 저장한다
      2. 드리븐(프로브) 테이블의 로우를 해쉬화하여 비교한다
      3. 일치하는 값을 찾는 경우 결과로 반환한다