백엔드

[DB] DB별 바인딩 문법 (오라클,mysql,postgresql,mssql,sqlite)

음그냥 2025. 8. 10. 01:27
반응형

1. DB별 바인딩 문법

DBMS자리표시자 문법예시
PostgreSQL $1, $2, ... WHERE id = $1
Oracle :1, :2 또는 :name WHERE id = :id
MySQL ? WHERE id = ?
MSSQL @name 또는 ? WHERE id = @id
SQLite ?, :name WHERE id = ?

 

2. 어떻게 컬럼이 같은지 알까?

컬럼명과 바인딩 순서는 별개
DB는 $1, $2 자리에 배열로 전달된 값을 그대로 순서대로 꽂아 넣는다

예시:

INSERT INTO users (id, name, age) VALUES ($1, $2, $3)
 
 
js
client.query(sql, [123, '홍길동', 25]);
  • $1 → 123 → id 컬럼
  • $2 → '홍길동' → name 컬럼
  • $3 → 25 → age 컬럼

여기서 컬럼 순서는 INSERT문에 직접 써준 순서가 기준이 됨
즉, DB가 알아서 매칭하는 게 아니라, 우리가 작성한 SQL에서 순서를 정한것임

반응형