跳到主要內容

編寫您自己的 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. 受益於對 SQL 的完整 IDE 支援和語法高亮
  3. 將您的 SQL 查詢作為完全型別化的函式匯入到 TypeScript 程式碼中
  4. 在保持原始 SQL 靈活性的同時,享受 Prisma 型別系統的安全性

TypedSQL 對於以下情況特別有用

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

透過使用 TypedSQL,您可以編寫高效、型別安全的資料庫查詢,而無需犧牲原始 SQL 的強大功能和靈活性。此功能允許您將自定義 SQL 查詢無縫整合到由 Prisma 驅動的應用程式中,確保型別安全並提高開發人員生產力。

有關 TypedSQL 的詳細入門指南,包括設定說明和使用示例,請參閱我們的TypedSQL 文件

原始查詢

在 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.