跳转到内容
搜索文档

SQL 语句

最后更新 查看 MarkdownAgent 设置

D1 兼容大多数 SQLite SQL 约定,因为它利用了 SQLite 的查询引擎。D1 支持许多数据库级语句,允许您列出表、索引,并检查给定表或索引的 schema。

您可以通过 Cloudflare 仪表板中的 D1 控制台、wrangler d1 executeD1 Worker Bindings API 执行这些语句。

支持的 SQLite 扩展

D1 supports 支持 SQLite 扩展的子集,以提供额外功能,包括:

有关支持函数的完整列表,请参阅源代码

兼容的 PRAGMA 语句

D1 支持部分 SQLite PRAGMA 语句。PRAGMA 语句是 SQLite 的 SQL 扩展。PRAGMA 命令可用于:

  • 修改某些 SQLite 操作的行为。
  • 向 SQLite 库查询 schema 或表的内部数据(但请注意,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. Schema:表所在的 schema(例如 maintemp
  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 的 schema(列、类型、是否可为 NULL、默认值)。

返回值

指定表中的每一列一行。每行包含:

  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. 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. 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
  • 若有错误: 返回描述检查所发现问题的一行字符串

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 会重写 schema 中对该表名的所有引用(这是默认行为)。

PRAGMA recursive_triggers = (on|off)

切换递归触发器功能。当 PRAGMA recursive_triggers 设置为:

  • ON:已触发的触发器可以激活其他触发器(同一触发器可在同一行上多次触发)
  • 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)

允许你将外键约束的执行推迟到当前事务结束。这在数据库迁移期间很有用,因为 schema 变更可能会因应用顺序不同而暂时违反约束。

这不会在当前事务之外禁用外键执行。如果在事务结束时仍有未解决的外键违规,事务将失败并返回 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 命令来尝试优化数据库中的所有 schema。ANALYZE 会更新一个内部表,其中包含有关表和索引的统计信息。这些统计信息可帮助 查询规划器 更高效地执行输入查询。

PRAGMA optimize 运行 ANALYZE 时,会设置限制以确保命令不会执行过长时间。另外,PRAGMA optimize 也可能判定无需运行 ANALYZE(例如 schema 未发生显著变化)。在这种情况下,不会进行任何优化。

我们建议在修改 schema 后运行此命令(例如,在创建索引之后)。

请参阅 SQLite PRAGMA optimize 文档,了解 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:  [...]

相关资源

这篇文档对您有帮助吗?