撰寫您自己的 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,您可以:
- 使用熟悉的語法編寫複雜的 SQL 查詢
- 受益於完整的 IDE 支援和 SQL 語法突顯
- 將您的 SQL 查詢匯入為 TypeScript 程式碼中的完全型別化函式
- 在保持原生 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 及更高版本。
與關係型資料庫中的原生查詢類似,這些方法並非型別安全,且需要手動處理查詢結果。