데이터베이스에서 SQL 쿼리를 실행합니다. SELECT, INSERT, UPDATE, DELETE 같은 데이터 조작문(DML)만 사용할 수 있습니다.
/organizations/:orgId/databases/:dbId/querySQL 쿼리를 실행합니다. SELECT, INSERT, UPDATE, DELETE를 지원합니다.
{
"query": "SELECT * FROM users WHERE active = ?",
"params": [true]
}{
"rows": [
{ "id": 1, "email": "alice@example.com", "name": "Alice", "active": 1 },
{ "id": 2, "email": "bob@example.com", "name": "Bob", "active": 1 }
]
}{
"query": "INSERT INTO users (email, name) VALUES (?, ?)",
"params": ["carol@example.com", "Carol"]
}{
"id": 3
}선택 입력 params 배열에 값을 담고 값마다 따옴표 없는 ?를 하나씩 쓰세요. 개수가 맞지 않으면 실행 전에 400으로 거절합니다. params 없는 기존 요청도 계속 동작합니다. 사용자 입력을 SQL 문자열에 직접 끼워 넣지 마세요.
입력값은 문자열, 유한한 숫자, 참·거짓, null을 받습니다. 큰 정수와 정확한 소수는 문자열로 보내세요. 테이블·컬럼 이름은 고정하세요. LIMIT ?는 지원하지 않으므로 범위가 제한된 정수인지 확인한 뒤 SQL에 LIMIT 숫자를 넣으세요.
호출 하나는 SQL 문장 하나입니다. 별도 요청들이 하나의 트랜잭션을 공유하지는 않습니다.
연결, 준비, 쿼리 실행에 주어지는 시간은 합쳐서 20초입니다. 전체 HTTP 요청의 제한 시간은 아닙니다. 실행 전에 시간이 초과되면 retryAfter가 포함된 503을 반환합니다. 실행을 시작한 뒤의 502는 결과를 확정할 수 없다는 뜻입니다. 데이터를 변경하는 요청은 저장된 결과를 확인한 뒤 다시 실행하세요.
SELECT 응답은 UTF-8 JSON의 응답 구조와 이스케이프 처리를 포함해 5 MiB까지 허용합니다. 초과하면 일부만 성공한 것처럼 반환하지 않고 400을 반환합니다. 필요한 열과 행을 줄이고, 큰 결과는 페이지로 나눠 조회하세요.