PostgreSQL 세계관 — MySQL 개발자를 위한 패러다임 전환
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. PostgreSQL에서 DDL(CREATE, ALTER, DROP)은 트랜잭션 안에서 어떻게 동작합니까?
💡 PostgreSQL은 DDL도 트랜잭션 안에서 실행할 수 있습니다. BEGIN 이후 CREATE/ALTER/DROP을 실행하고 ROLLBACK하면 해당 DDL이 모두 취소됩니다. MySQL은 DDL이 자동 커밋되어 롤백이 불가능하다는 점과 대조됩니다.
Q2. PostgreSQL MVCC에서 UPDATE 문이 내부적으로 수행하는 동작은?
💡 PostgreSQL MVCC는 heap-based 다중 버전 방식으로, UPDATE 시 기존 행에 xmax(삭제 트랜잭션 ID)를 기록하고 새 버전의 행을 같은 테이블 파일에 INSERT합니다. 이 '죽은 행'은 이후 VACUUM이 회수합니다.
Q3. PostgreSQL에서 SERIAL 타입으로 컬럼을 정의했을 때 내부적으로 생성되는 객체는?
💡 SERIAL은 편의 문법으로, 내부적으로 {table}_{column}_seq 이름의 Sequence 객체를 자동 생성하고 해당 컬럼의 DEFAULT를 nextval('{table}_{column}_seq')로 설정합니다. PostgreSQL 10 이후에는 IDENTITY 컬럼이 SQL 표준 방식으로 권장됩니다.
Q4. PostgreSQL에서 문자열 리터럴에 사용해야 하는 올바른 따옴표는?
💡 PostgreSQL에서 싱글쿼트(')는 문자열 리터럴, 더블쿼트(")는 식별자(테이블명, 컬럼명 등)에 사용합니다. MySQL은 더블쿼트를 문자열로도 허용하지만 PostgreSQL에서는 오류가 발생합니다.
Q5. PostgreSQL에서 재귀 CTE를 작성할 때 사용하는 키워드 조합은?
💡 PostgreSQL의 재귀 CTE는 WITH RECURSIVE 키워드로 시작하며, 앵커 쿼리와 재귀 쿼리를 UNION ALL로 연결합니다. UNION(중복 제거)도 사용 가능하지만 성능상 UNION ALL이 일반적입니다. Oracle의 CONNECT BY PRIOR 방식과 달리 표준 SQL입니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.