Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

SQL ステートメント

最終更新 Markdown で表示Agent セットアップ

D1 は SQLite のクエリエンジンを使うため、SQLite の SQL 規約のほとんどと互換があります。D1 は、テーブルやインデックスの一覧、特定のテーブルやインデックスのスキーマ確認ができる、データベースレベルのステートメントにも対応しています。

これらのステートメントは、Cloudflare ダッシュボードの D1 コンソール、wrangler d1 execute、または D1 Worker Bindings API から実行できます。

対応している SQLite 拡張

D1 supports 追加機能として、次を含む SQLite 拡張の一部を利用できます。

対応している関数の一覧は、ソースコード を参照してください。

互換性のある PRAGMA ステートメント

D1 は一部の SQLite PRAGMA ステートメントに対応しています。PRAGMA ステートメントは SQLite 向けの SQL 拡張です。PRAGMA コマンドでは次ができます。

  • 特定の SQLite 操作の動作を変更する。
  • スキーマやテーブルに関する内部データを SQLite ライブラリに問い合わせる(ただし、PRAGMA ステートメントではテーブルの内容はクエリできません)。
  • 環境変数 を制御する。

このページの PRAGMA ステートメントの例は、次の SQL を使います。

PRAGMA foreign_keys=off;
DROP TABLE IF EXISTS "Employee";
DROP TABLE IF EXISTS "Category";
DROP TABLE IF EXISTS "Customer";
DROP TABLE IF EXISTS "Shipper";
DROP TABLE IF EXISTS "Supplier";
DROP TABLE IF EXISTS "Order";
DROP TABLE IF EXISTS "Product";
DROP TABLE IF EXISTS "OrderDetail";
DROP TABLE IF EXISTS "CustomerCustomerDemo";
DROP TABLE IF EXISTS "CustomerDemographic";
DROP TABLE IF EXISTS "Region";
DROP TABLE IF EXISTS "Territory";
DROP TABLE IF EXISTS "EmployeeTerritory";
DROP VIEW IF EXISTS [ProductDetails_V];
CREATE TABLE IF NOT EXISTS "Employee" ( "Id" INTEGER PRIMARY KEY, "LastName" VARCHAR(8000) NULL, "FirstName" VARCHAR(8000) NULL, "Title" VARCHAR(8000) NULL, "TitleOfCourtesy" VARCHAR(8000) NULL, "BirthDate" VARCHAR(8000) NULL, "HireDate" VARCHAR(8000) NULL, "Address" VARCHAR(8000) NULL, "City" VARCHAR(8000) NULL, "Region" VARCHAR(8000) NULL, "PostalCode" VARCHAR(8000) NULL, "Country" VARCHAR(8000) NULL, "HomePhone" VARCHAR(8000) NULL, "Extension" VARCHAR(8000) NULL, "Photo" BLOB NULL, "Notes" VARCHAR(8000) NULL, "ReportsTo" INTEGER NULL, "PhotoPath" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Category" ( "Id" INTEGER PRIMARY KEY, "CategoryName" VARCHAR(8000) NULL, "Description" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Customer" ( "Id" VARCHAR(8000) PRIMARY KEY, "CompanyName" VARCHAR(8000) NULL, "ContactName" VARCHAR(8000) NULL, "ContactTitle" VARCHAR(8000) NULL, "Address" VARCHAR(8000) NULL, "City" VARCHAR(8000) NULL, "Region" VARCHAR(8000) NULL, "PostalCode" VARCHAR(8000) NULL, "Country" VARCHAR(8000) NULL, "Phone" VARCHAR(8000) NULL, "Fax" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Shipper" ( "Id" INTEGER PRIMARY KEY, "CompanyName" VARCHAR(8000) NULL, "Phone" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Supplier" ( "Id" INTEGER PRIMARY KEY, "CompanyName" VARCHAR(8000) NULL, "ContactName" VARCHAR(8000) NULL, "ContactTitle" VARCHAR(8000) NULL, "Address" VARCHAR(8000) NULL, "City" VARCHAR(8000) NULL, "Region" VARCHAR(8000) NULL, "PostalCode" VARCHAR(8000) NULL, "Country" VARCHAR(8000) NULL, "Phone" VARCHAR(8000) NULL, "Fax" VARCHAR(8000) NULL, "HomePage" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Order" ( "Id" INTEGER PRIMARY KEY, "CustomerId" VARCHAR(8000) NULL, "EmployeeId" INTEGER NOT NULL, "OrderDate" VARCHAR(8000) NULL, "RequiredDate" VARCHAR(8000) NULL, "ShippedDate" VARCHAR(8000) NULL, "ShipVia" INTEGER NULL, "Freight" DECIMAL NOT NULL, "ShipName" VARCHAR(8000) NULL, "ShipAddress" VARCHAR(8000) NULL, "ShipCity" VARCHAR(8000) NULL, "ShipRegion" VARCHAR(8000) NULL, "ShipPostalCode" VARCHAR(8000) NULL, "ShipCountry" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Product" ( "Id" INTEGER PRIMARY KEY, "ProductName" VARCHAR(8000) NULL, "SupplierId" INTEGER NOT NULL, "CategoryId" INTEGER NOT NULL, "QuantityPerUnit" VARCHAR(8000) NULL, "UnitPrice" DECIMAL NOT NULL, "UnitsInStock" INTEGER NOT NULL, "UnitsOnOrder" INTEGER NOT NULL, "ReorderLevel" INTEGER NOT NULL, "Discontinued" INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS "OrderDetail" ( "Id" VARCHAR(8000) PRIMARY KEY, "OrderId" INTEGER NOT NULL, "ProductId" INTEGER NOT NULL, "UnitPrice" DECIMAL NOT NULL, "Quantity" INTEGER NOT NULL, "Discount" DOUBLE NOT NULL);
CREATE TABLE IF NOT EXISTS "CustomerCustomerDemo" ( "Id" VARCHAR(8000) PRIMARY KEY, "CustomerTypeId" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "CustomerDemographic" ( "Id" VARCHAR(8000) PRIMARY KEY, "CustomerDesc" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Region" ( "Id" INTEGER PRIMARY KEY, "RegionDescription" VARCHAR(8000) NULL);
CREATE TABLE IF NOT EXISTS "Territory" ( "Id" VARCHAR(8000) PRIMARY KEY, "TerritoryDescription" VARCHAR(8000) NULL, "RegionId" INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS "EmployeeTerritory" ( "Id" VARCHAR(8000) PRIMARY KEY, "EmployeeId" INTEGER NOT NULL, "TerritoryId" VARCHAR(8000) NULL);
CREATE VIEW [ProductDetails_V] as select p.*, c.CategoryName, c.Description as [CategoryDescription], s.CompanyName as [SupplierName], s.Region as [SupplierRegion] from [Product] p join [Category] c on p.CategoryId = c.id join [Supplier] s on s.id = p.SupplierId;

PRAGMA table_list

データベース内のテーブルとビューを一覧します。D1 が管理するシステムテーブルも含まれます。

戻り値

テーブルごとに 1 行です。各行の内容は次のとおりです。

  1. Schema: テーブルが属するスキーマ(例: main または temp
  2. name: テーブル名
  3. type: オブジェクトの種類(tableviewshadowvirtual のいずれか)
  4. ncol: テーブルの列数(生成列や隠し列を含む)
  5. wr: WITHOUT ROWID テーブルなら 1、それ以外は 0
  6. strict: STRICT テーブルなら 1、それ以外は 0

PRAGMA table_list の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA table_list'
🌀 Executing on remote database [DATABASE_NAME] (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 0.5874ms
┌────────┬──────────────────────┬───────┬──────┬────┬────────┐
 schema name type ncol wr strict
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Territory table 3 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main CustomerDemographic table 2 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main OrderDetail table 6 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main sqlite_schema table 5 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Region table 2 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main _cf_KV table 2 1 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main ProductDetails_V view 14 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main EmployeeTerritory table 3 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Employee table 18 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Category table 3 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Customer table 11 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Shipper table 3 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Supplier table 12 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Order table 14 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main CustomerCustomerDemo table 2 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 main Product table 10 0 0
├────────┼──────────────────────┼───────┼──────┼────┼────────┤
 temp sqlite_temp_schema table 5 0 0
└────────┴──────────────────────┴───────┴──────┴────┴────────┘

PRAGMA table_info("TABLE_NAME")

指定した TABLE_NAME のスキーマ(列、型、null、デフォルト値)を表示します。

戻り値

指定したテーブルの列ごとに 1 行です。各行の内容は次のとおりです。

  1. cid: 行識別子
  2. name: 列名
  3. type: データ型(指定されている場合)。それ以外は ''
  4. notnull: 列が NULL 可能な場合は 1、それ以外は 0
  5. dflt_value: 列のデフォルト値
  6. pk: 列が主キーなら 1、それ以外は 0

PRAGMA table_info の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA table_info("Order")'
🌀 Executing on remote database [DATABASE_NAME] (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 0.8502ms
┌─────┬────────────────┬───────────────┬─────────┬────────────┬────┐
 cid name type notnull dflt_value pk
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 0 Id INTEGER 0 1
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 1 CustomerId VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 2 EmployeeId INTEGER 1 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 3 OrderDate VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 4 RequiredDate VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 5 ShippedDate VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 6 ShipVia INTEGER 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 7 Freight DECIMAL 1 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 8 ShipName VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 9 ShipAddress VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 10 ShipCity VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 11 ShipRegion VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 12 ShipPostalCode VARCHAR(8000)  0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┤
 13 ShipCountry VARCHAR(8000)  0 0
└─────┴────────────────┴───────────────┴─────────┴────────────┴────┘

PRAGMA table_xinfo("TABLE_NAME")

PRAGMA table_info(TABLE_NAME) と似ていますが、生成列 も含まれます。

PRAGMA table_xinfo の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA table_xinfo("Order")'
🌀 Executing on remote database [DATABASE_NAME] (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 0.3854ms
┌─────┬────────────────┬───────────────┬─────────┬────────────┬────┬────────┐
 cid name type notnull dflt_value pk hidden
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 0 Id INTEGER 0 1 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 1 CustomerId VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 2 EmployeeId INTEGER 1 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 3 OrderDate VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 4 RequiredDate VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 5 ShippedDate VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 6 ShipVia INTEGER 0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 7 Freight DECIMAL 1 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 8 ShipName VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 9 ShipAddress VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 10 ShipCity VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 11 ShipRegion VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 12 ShipPostalCode VARCHAR(8000)  0 0 0
├─────┼────────────────┼───────────────┼─────────┼────────────┼────┼────────┤
 13 ShipCountry VARCHAR(8000)  0 0 0
└─────┴────────────────┴───────────────┴─────────┴────────────┴────┴────────┘

PRAGMA index_list("TABLE_NAME")

指定した TABLE_NAME のインデックスを表示します。

戻り値

指定したテーブルに関連するインデックスごとに 1 行です。各行の内容は次のとおりです。

  1. seq: 内部追跡用のシーケンス番号
  2. name: インデックス名
  3. unique: UNIQUE インデックスなら 1、それ以外は 0
  4. origin: インデックスの由来(CREATE INDEX ステートメントで作成した場合は c、UNIQUE 制約で作成した場合は u、PRIMARY KEY 制約で作成した場合は pk
  5. partial: 部分インデックスなら 1、それ以外は 0

PRAGMA index_list の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA index_list("Territory")'
🌀 Executing on remote database d1-pragma-db (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 0.2177ms
┌─────┬──────────────────────────────┬────────┬────────┬─────────┐
 seq name unique origin partial
├─────┼──────────────────────────────┼────────┼────────┼─────────┤
 0 sqlite_autoindex_Territory_1 1 pk 0
└─────┴──────────────────────────────┴────────┴────────┴─────────┘

PRAGMA index_info(INDEX_NAME)

指定した INDEX_NAME のインデックス対象列を表示します。

戻り値

指定したインデックスのキー列ごとに 1 行です。各行の内容は次のとおりです。

  1. seqno: インデックス内での列の順位
  2. cid: インデックス対象テーブル内での列の順位
  3. name: インデックス対象の列名

PRAGMA index_info の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA index_info("sqlite_autoindex_Territory_1")'
🌀 Executing on remote database d1-pragma-db (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 0.2523ms
┌───────┬─────┬──────┐
 seqno cid name
├───────┼─────┼──────┤
 0 0 Id
└───────┴─────┴──────┘

PRAGMA index_xinfo("INDEX_NAME")

PRAGMA index_info("TABLE_NAME") と似ていますが、隠し列も含まれます。

PRAGMA index_xinfo の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA index_xinfo("sqlite_autoindex_Territory_1")'
🌀 Executing on remote database d1-pragma-db (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 0.6034ms
┌───────┬─────┬──────┬──────┬────────┬─────┐
 seqno cid name desc coll key
├───────┼─────┼──────┼──────┼────────┼─────┤
 0 0 Id 0 BINARY 1
├───────┼─────┼──────┼──────┼────────┼─────┤
 1 -1 0 BINARY 0
└───────┴─────┴──────┴──────┴────────┴─────┘

PRAGMA quick_check

テーブルの書式と整合性を確認します。対象は次のとおりです。

  • 正しくない書式のレコード
  • 欠落しているページ
  • 複数回使われている、またはまったく使われていないデータベースの区間

戻り値

  • エラーがない場合:OK の 1 行
  • エラーがある場合: チェックで検出した問題を説明する文字列

PRAGMA quick_check の例

npx wrangler d1 execute [DATABASE_NAME] --command='PRAGMA quick_check'
🌀 Executing on remote database [DATABASE_NAME] (DATABASE_ID):
🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
🚣 Executed 1 commands in 1.4073ms
┌─────────────┐
 quick_check
├─────────────┤
 ok
└─────────────┘

PRAGMA foreign_key_check

選択したテーブル内の、無効な外部キー参照を確認します。

PRAGMA foreign_key_list("TABLE_NAME")

選択したテーブルの外部キー制約を一覧します。

PRAGMA case_sensitive_like = (on|off)

LIKE 演算子の大文字小文字の区別を切り替えます。PRAGMA case_sensitive_like を次のように設定した場合の動作です。

  • ON: 'a' LIKE 'A' は false
  • OFF: 'a' LIKE 'A' は true(LIKE 演算子のデフォルト動作)

PRAGMA ignore_check_constraints = (on|off)

CHECK 制約の強制を切り替えます。PRAGMA ignore_check_constraints を次のように設定した場合の動作です。

  • ON: CHECK 制約を無視する
  • OFF: CHECK 制約を強制する(デフォルト動作)

PRAGMA legacy_alter_table = (on|off)

レガシー版 SQLite(3.24.0)の前後で、ALTER TABLE RENAME コマンドの動作を切り替えます。PRAGMA legacy_alter_table を次のように設定した場合の動作です。

  • ON: ALTER TABLE RENAME は、CREATE TABLE ステートメント内のテーブル名の最初の出現と、関連する CREATE INDEX および CREATE TRIGGER ステートメントだけを書き換えます。それ以外の出現は変更しません。
  • OFF: ALTER TABLE RENAME は、スキーマ内のテーブル名への参照をすべて書き換えます(デフォルト動作)。

PRAGMA recursive_triggers = (on|off)

再帰トリガーの機能を切り替えます。PRAGMA recursive_triggers を次のように設定した場合の動作です。

  • ON: 発火したトリガーが、ほかのトリガーを起動できる(1 つのトリガーが同じ行に対して複数回発火できる)
  • OFF: 発火したトリガーは、ほかのトリガーを起動できない

PRAGMA reverse_unordered_selects = (on|off)

ORDER BY 句のない SELECT ステートメントの結果の順序を切り替えます。PRAGMA reverse_unordered_selects を次のように設定した場合の動作です。

  • ON: SELECT ステートメントの結果の順序を逆にする
  • OFF: SELECT ステートメントの結果を通常の順序で返す

PRAGMA foreign_keys = (on|off)

外部キー制約の強制を切り替えます。PRAGMA foreign_keys を次のように設定した場合の動作です。

  • ON: 外部キー制約に違反する操作を止める
  • OFF: 外部キー制約に違反する操作を許可する

PRAGMA defer_foreign_keys = (on|off)

外部キー制約 の強制を、現在のトランザクションの終了まで遅延できます。適用順によってスキーマ変更が一時的に制約に違反することがあるため、データベースマイグレーション のときに役立ちます。

現在のトランザクションの外では、外部キーの強制は無効になりません。トランザクションの終了時点で未解決の外部キー違反が残っていると、FOREIGN KEY constraint failed エラーで失敗します。

PRAGMA defer_foreign_keys = ON を設定しても、ON DELETE CASCADE アクションの実行は止まりません。外部キー制約のチェックはトランザクション終了まで遅延されますが、ON DELETE CASCADE 操作は有効なままです。これは SQLite の動作と一致します。

外部キーの強制を遅延するには、トランザクションの先頭、または制約に違反する変更の前に PRAGMA defer_foreign_keys = on を設定します。

-- Defer foreign key enforcement in this transaction.
PRAGMA defer_foreign_keys = on

-- Run your CREATE TABLE or ALTER TABLE / COLUMN statements
ALTER TABLE users ...

-- This is implicit if not set by the end of the transaction.
PRAGMA defer_foreign_keys = off

外部キーの扱いについて詳しくは、外部キーのドキュメント を参照してください。

PRAGMA optimize

必要に応じて各テーブルに ANALYZE コマンドを実行し、データベース内のすべてのスキーマを最適化しようとします。ANALYZE は、テーブルとインデックスの統計情報を持つ内部テーブルを更新します。この統計情報により、クエリプランナー は入力クエリをより効率よく実行できます。

PRAGMA optimizeANALYZE を実行するときは、コマンドが長くなりすぎないよう制限を設けます。一方、スキーマが大きく変わっていない場合など、ANALYZE が不要と判断することもあります。その場合は最適化は行われません。

スキーマを変更したあと(たとえば インデックスを作成した あと)に、このコマンドを実行することを推奨します。

PRAGMA optimize がデータベースを最適化する仕組みについて詳しくは、SQLite の PRAGMA optimize ドキュメント を参照してください。

sqlite_master をクエリする

sqlite_master テーブルをクエリすると、すべてのテーブル、インデックス、それらを生成した元の SQL を表示できます。

SELECT name, sql FROM sqlite_master
      {
        "name": "users",
        "sql": "CREATE TABLE users ( user_id INTEGER PRIMARY KEY, email_address TEXT, created_at INTEGER, deleted INTEGER, settings TEXT)"
      },
      {
        "name": "idx_ordered_users",
        "sql": "CREATE INDEX idx_ordered_users ON users(created_at DESC)"
      },
      {
        "name": "Order",
        "sql": "CREATE TABLE \"Order\" ( \"Id\" INTEGER PRIMARY KEY, \"CustomerId\" VARCHAR(8000) NULL, \"EmployeeId\" INTEGER NOT NULL, \"OrderDate\" VARCHAR(8000) NULL, \"RequiredDate\" VARCHAR(8000) NULL, \"ShippedDate\" VARCHAR(8000) NULL, \"ShipVia\" INTEGER NULL, \"Freight\" DECIMAL NOT NULL, \"ShipName\" VARCHAR(8000) NULL, \"ShipAddress\" VARCHAR(8000) NULL, \"ShipCity\" VARCHAR(8000) NULL, \"ShipRegion\" VARCHAR(8000) NULL, \"ShipPostalCode\" VARCHAR(8000) NULL, \"ShipCountry\" VARCHAR(8000) NULL)"
      },
      {
        "name": "Product",
        "sql": "CREATE TABLE \"Product\" ( \"Id\" INTEGER PRIMARY KEY, \"ProductName\" VARCHAR(8000) NULL, \"SupplierId\" INTEGER NOT NULL, \"CategoryId\" INTEGER NOT NULL, \"QuantityPerUnit\" VARCHAR(8000) NULL, \"UnitPrice\" DECIMAL NOT NULL, \"UnitsInStock\" INTEGER NOT NULL, \"UnitsOnOrder\" INTEGER NOT NULL, \"ReorderLevel\" INTEGER NOT NULL, \"Discontinued\" INTEGER NOT NULL)"
      }

LIKE で検索する

SQL の LIKE 演算子で検索できます。

const { results } = await env.DB.prepare(
	"SELECT * FROM Customers WHERE CompanyName LIKE ?",
)
	.bind("%eve%")
	.run();
console.log("results: ", results);
results:  [...]

関連リソース

役に立ちましたか?