📌 EdgeQL 쿼리 패턴 완전 정복
EdgeQL은 PostgreSQL 기반의 차세대 쿼리 언어로, 객체지향적인 문법과 JSON 친화적인 결과를 특징으로 합니다. 다음은 실무에서 자주 쓰이는 EdgeQL 쿼리 패턴과 개념입니다.
✅ 1. 기본 SELECT 문
select Movie {
title,
year
};
- 특정 타입(Movie)에서 원하는 필드만 선택
- JSON 형태로 반환됨
✅ 2. 링크(Link)를 통한 중첩 조회
select Movie {
title,
actors: {
name
}
};
- actors는 Movie → Person을 잇는 link 타입
- { name }처럼 내부 필드를 중첩해서 선택 가능
- 객체 관계를 자연스럽게 탐색
✅ 3. 조건 필터링 (FILTER)
select Person {
name
}
filter .name = 'Tom Hanks';
- filter 키워드를 사용해 조건 지정
- .은 현재 객체를 참조 (.name은 Person의 name)
✅ 4. 정렬 (ORDER BY) + 제한 (LIMIT)
select Movie {
title,
year
}
order by .year desc
limit 5;
- order by로 정렬
- limit으로 결과 개수 제한
✅ 5. 중첩 서브쿼리
select Person {
name,
acted_in: {
title
}
};
- acted_in도 link일 경우 중첩 가능
- 복잡한 관계형 탐색이 간결하게 표현됨
✅ 6. INSERT 예시
insert Person {
name := 'Scarlett Johansson'
};
- := 연산자로 값 지정
✅ 7. UPDATE 예시
update Person
filter .name = 'Tom Hanks'
set {
name := 'Thomas Hanks'
};
- 특정 조건 필터 후 필드 수정
✅ 8. DELETE 예시
delete Person
filter .name = 'Tom Hanks';
- 조건에 맞는 레코드 삭제
🧠 실무 팁 요약
- { field } 중첩은 link 또는 multi link에만 사용 가능
- 기본 property(예: title, year 등)에는 중첩 불가
- .field는 항상 현재 객체의 필드를 참조
- 쿼리 결과는 JSON 구조로 출력 → API와 연동 용이
필요 시 JOIN 없이도 관계형 데이터를 직관적으로 조회할 수 있는 게 EdgeQL의 큰 장점입니다.
'기술블로그-Fastapi편' 카테고리의 다른 글
📌 데이터베이스 검색 방식: Seq Scan vs Index Scan 정리 (0) | 2025.05.28 |
---|---|
📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리 (0) | 2025.05.28 |
📌 EdgeDB 마이그레이션 꼬임 해결: 전체 초기화 루틴 (0) | 2025.05.28 |
📌 WSL + VS Code 연동 및 'code' 명령어 설정 방법 정리 (0) | 2025.05.28 |
📌 WSL 기반 Gel(EdgeDB) 설치 및 실습 정리 (0) | 2025.05.28 |