跳至主要內容

撰寫您自己的 SQL

雖然 Prisma Client API 的目標是讓您所有的資料庫查詢都直觀、型別安全且方便,但仍可能存在需要使用原生 SQL 來處理的情況。

這種情況可能因多種原因發生,例如需要優化特定查詢的效能,或者您的資料需求無法完全透過 Prisma Client 的查詢 API 來達成。

在大多數情況下,TypedSQL 允許您使用 SQL 表達查詢,同時仍能享有 Prisma Client 極佳的開發者體驗。然而,由於 TypedSQL 是靜態型別的,它可能無法處理某些場景,例如動態生成的 WHERE 子句。在這些情況下,您將需要使用 $queryRaw$executeRaw,或是它們不安全的對應方法。

使用 Prisma Client 和 TypedSQL 編寫型別安全的查詢

資訊

TypedSQL 可用於 Prisma ORM 5.19.0 及更高版本。若需在舊版本中進行原生資料庫存取,請參閱我們的原生查詢文件

什麼是 TypedSQL?

TypedSQL 是 Prisma ORM 的一項新功能,它允許您在 .sql 檔案中編寫查詢,同時仍能享有 Prisma Client 出色的開發者體驗。您可以編寫自己熟悉的程式碼,並從完全型別化的輸入和輸出中受益。

使用 TypedSQL,您可以:

  1. 使用熟悉的語法編寫複雜的 SQL 查詢
  2. 受益於完整的 IDE 支援和 SQL 語法突顯
  3. 將您的 SQL 查詢匯入為 TypeScript 程式碼中的完全型別化函式
  4. 在保持原生 SQL 靈活性的同時,獲得 Prisma 型別系統的安全保障

TypedSQL 特別適用於:

  • 使用 Prisma 查詢 API 難以表達的複雜報告查詢
  • 需要細部調整 SQL 的效能關鍵型操作
  • 利用 Prisma API 尚未支援的資料庫特定功能

透過使用 TypedSQL,您可以編寫高效、型別安全的資料庫查詢,而無需犧牲原生 SQL 的強大與靈活性。此功能讓您能夠將自訂 SQL 查詢無縫整合到基於 Prisma 的應用程式中,確保型別安全並提高開發者生產力。

有關如何開始使用 TypedSQL 的詳細指南(包括設定說明和使用範例),請參閱我們的 TypedSQL 文件

原生查詢 (Raw queries)

在 5.19.0 版本之前,Prisma Client 僅支援非型別安全的原生 SQL 查詢,且需要手動將查詢結果映射到所需的型別。

雖然不如 TypedSQL 易用,但這些查詢仍然受支援,並且在 TypedSQL 因功能尚未支援或查詢是動態生成而無法使用時非常有用。

關係型資料庫中原生 SQL 查詢的替代方案

Prisma ORM 支援四種在關係型資料庫中執行原生 SQL 查詢的方法:

這些指令類似於使用 TypedSQL,但它們並非型別安全,且是在您的程式碼中以字串形式編寫,而非在專屬的 .sql 檔案中。

文件資料庫中原生查詢的替代方案

對於 MongoDB,Prisma ORM 支援三種執行原生查詢的方法:

這些方法允許您執行原生的 MongoDB 指令和查詢,當您需要使用 MongoDB 特定的功能或優化時,可提供靈活性。

$runCommandRaw 用於執行資料庫指令,<model>.findRaw 用於尋找符合篩選條件的文件,而 <model>.aggregateRaw 用於聚合操作。這三種方法均適用於 Prisma 3.9.0 及更高版本。

與關係型資料庫中的原生查詢類似,這些方法並非型別安全,且需要手動處理查詢結果。

© . This site is unofficial and not affiliated with Prisma Data, Inc.