TechBridge

Array 타입 실전 — 배열 조회·수정·인덱싱 · ANY/ALL 활용

← 목록으로

📋 실습 안내

✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기 내 코드 실행 결과
🎯 완성 미리보기 목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기 이번 강의 전용
  선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. PostgreSQL 배열의 인덱스는 몇 번부터 시작하는가?
💡 PostgreSQL 배열 인덱스는 1부터 시작합니다. arr[1]이 첫 번째 요소입니다. 대부분의 프로그래밍 언어(C, Python, JavaScript)가 0부터 시작하는 것과 달리 SQL 표준에 맞춰 1부터 시작합니다. arr[0]은 NULL을 반환합니다.
Q2. ARRAY['A','B'] && ARRAY['B','C']의 결과는?
💡 && 연산자는 두 배열에 공통 요소가 하나라도 있으면 TRUE를 반환합니다. ARRAY['A','B']와 ARRAY['B','C']는 'B'를 공유하므로 TRUE입니다. 공통 요소가 없으면 FALSE입니다.
Q3. unnest(ARRAY['a','b','c']) WITH ORDINALITY AS t(val, pos)에서 pos의 값은?
💡 WITH ORDINALITY는 unnest로 전개된 각 행에 순서 번호를 부여합니다. 첫 번째 요소부터 1, 2, 3... 순으로 부여됩니다. 이를 통해 배열 내 위치(인덱스)를 알 수 있어 정렬이나 필터링에 활용할 수 있습니다.
Q4. 배열 컬럼에 GIN 인덱스를 만들어야 하는 주요 이유는?
💡 GIN(Generalized Inverted Index)은 배열의 각 원소를 인덱싱하여 @> (포함), <@ (피포함), && (교집합) 연산자 쿼리를 빠르게 처리합니다. 이 연산자들은 GIN 없이는 시퀀셜 스캔이 필요하지만, GIN이 있으면 비트맵 인덱스 스캔으로 수십~수백 배 빠르게 처리됩니다.
Q5. CI4에서 PostgreSQL 배열 컬럼을 읽었을 때 PHP로 반환되는 형식은?
💡 PostgreSQL 드라이버(PDO pg 또는 pgsql)는 배열 컬럼을 PHP로 전달할 때 PostgreSQL 배열 리터럴 형식인 "{elem1,elem2}"와 같은 문자열로 반환합니다. PHP에서 사용하려면 trim($val, "{}") 후 str_getcsv()로 파싱하거나, 별도 파싱 함수를 사용해야 합니다.
🎉

퀴즈 통과!

점수: 0점 — 수고하셨습니다!

다음 강의로 →
😅

아쉽네요!

점수: 0점 — 70점 이상이 되어야 통과합니다.