在线运行 SQL

浏览器内置真正的 SQLite 数据库,建表、插入、查询都能做,数据库跨多次运行保留

就绪

代码

查询结果

当前数据库

数据库结构会在第一次运行后显示在这里。

这是什么?

浏览器内置的真正的 SQLite 数据库,可以建表、插入数据、执行查询, 和本地安装的 SQLite 行为一致。数据库保存在浏览器内存中,因此 建表和插入的数据会跨多次运行保留——可以先跑建表语句, 再跑查询语句,不必每次都重建。

怎么用?

  1. 写 SQL,多条语句用分号 ; 分隔,可一次全部执行;
  2. 点「运行」或按 Ctrl+Enter,查询结果以表格显示;
  3. 左侧「当前数据库」面板会显示已建的表和字段,方便核对表名列名;
  4. 想推倒重来就点「重置数据库」,会清空所有表。

支持能力对照

能力是否支持说明
SQLite 完整 SQL 语法支持建表、索引、视图、触发器、事务
连表查询 JOIN支持INNER / LEFT / CROSS 等
分组聚合支持GROUP BY、HAVING、窗口函数
CTE 与递归查询支持WITH / WITH RECURSIVE
数据库跨运行保留支持数据存在浏览器内存中,刷新页面即消失
导入导出 .db 文件不支持无文件系统访问权限
长时间运行限 10 秒递归 CTE 写错会死循环,超时自动终止

注意:超时被强制停止、或手动点「停止」时,数据库会随执行引擎一起被销毁, 表和数据会丢失;刷新页面同理。重要数据请自行复制到本地保存。

常见问题

为什么表不见了 / 提示 no such table?

三种可能:一是还没运行过建表语句;二是点过「重置数据库」;三是上一次运行超时被强制停止过 (数据库随引擎一起销毁了)。重新运行建表语句即可。

字符串该用单引号还是双引号?

SQL 标准里字符串用单引号 '文本',双引号是标识符 (表名、列名)。写 WHERE name = "张三" 在 SQLite 里恰好也能工作, 但那是因为它把双引号当成了标识符做了兼容,换到 MySQL 等数据库就会出错。建议统一用单引号。

查询结果太多会卡住吗?

不会。为免浏览器渲染卡顿,结果表格最多显示 500 行,超出会提示被截断。 建议用 LIMIT 主动限制行数。

数据会被上传吗?

不会。数据库完全运行在你的浏览器内存中,服务器只发送了页面和引擎文件。

相关工具

Python 在线运行 · JSON 格式化 · 全部代码运行工具