db

db 记住一个已安装的数据库驱动,并把统一的短命令转发给它,同时保留数据库引擎自己的原生语言。

数据库版本 1.3.4稳定
lil-terminal

概览

把 db 作为已安装数据库驱动的会话级短镜像:只需选择一次 MySQL/MariaDB、PostgreSQL、Redis、SQLite 或 MongoDB,之后就用同一个短前缀完成检查、导出、备份和原生命令。

一个前缀,不同数据库引擎

db 是已安装数据库驱动的统一入口,本身不是新的数据库引擎。它记住当前选择的驱动并提供各驱动共有的操作,而 : 后面的内容仍使用数据库自身的语言。这样可以缩短日常操作,又不会把 SQL、Redis 数据结构和 MongoDB 文档混成同一种模型。

语法

lil-terminal
db [driver] [options]

参考

db

显示当前选择的数据库驱动和已安装驱动

db <driver>

选择驱动:mysql|postgresql|redis|sqlite|mongodb

-c ...

通过已选择的驱动连接

-use ...

通过已选择的驱动选择数据库

-l

通过已选择的驱动列出数据库或命名空间

-t

通过已选择的驱动列出表、集合或键

-s <name>

通过已选择的驱动显示结构

-n <name> [rows]

通过已选择的驱动预览记录

-f <name> <text>

通过已选择的驱动搜索

-o <name> ...

通过已选择的驱动导出

-a ...

通过所选驱动添加数据

-w ...

通过所选驱动更新数据

-d ...

通过所选驱动删除数据

-m [name]

通过当前驱动保存连接

-M <name>

删除当前驱动的已保存连接

-k [name]

列出或检查当前驱动的已保存连接

-K <name>

使用当前驱动的已保存连接进行连接

-e

断开已选择的驱动

db : <native>

执行已选择驱动的原生命令或查询

db dump ...

通过已选择的驱动创建转储

db load <file>

通过已选择的驱动载入转储或脚本

用途

db 用来选择已安装的数据库驱动并转发命令,它本身不是数据库,也不会在 SQL、Redis 和 MongoDB 语言之间转换。文件数据库选 db sqlite,服务器数据库选 db mysql。

操作步骤

运行 db sqlite -c \sandbox\db\shop.sqlite 后,db -t 查看表,db -n products 2 预览两行,db -f 搜索。db : 发送所选引擎的原生命令。db mariadb 选择 MySQL 驱动,但不会安装它。

限制与安全

驱动选择保存在当前 PHP 会话中。-m 可主动把敏感连接资料写入 .lil.key;-k/-K/-M 用于查看、重连和删除。修改数据前请备份,确认 PHP 扩展可用。示例不会访问访客数据库。

交互式 sandbox 预览

可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。

选择 SQLite 并检查一张表

安装与管理

安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。

Base 与 Minimum 是同一当前模块版本的两个包。

Base 包

安装包含本地参考和全部已发布模式的完整包。

install db
Minimum 包

安装精简包。该包不包含本地参考;help <cmd> -i 会打开当前服务器参考。

install db -m
精确公开版本

安装这个确切的已发布版本。

install db -v 1.3.4
检查或升级

让 upgrade 检查兼容性,仅在需要时替换已安装块。

upgrade db
删除模块

删除扩展块,不影响核心和其他模块。

install db -u

示例

示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。

选择 SQLite 并检查一张表
db
No database driver selected
mysql       MySQL / MariaDB · installed
postgresql  PostgreSQL · installed
redis       Redis · installed
sqlite      SQLite · installed
mongodb     MongoDB · installed
选择驱动:mysql|postgresql|redis|sqlite|mongodb
db sqlite
Database driver selected: sqlite
选择驱动:mysql|postgresql|redis|sqlite|mongodb
db mariadb
Database driver selected: mysql
选择驱动:mysql|postgresql|redis|sqlite|mongodb
db oracle
Unknown database driver: oracle
通过已选择的驱动连接
db sqlite -c \sandbox\db\shop.sqlite
Status  connected
File    sandbox/db/shop.sqlite
SQLite  (version depends on the host)
通过已选择的驱动选择数据库
db sqlite -use \sandbox\db\shop.sqlite
Status  connected
File    sandbox/db/shop.sqlite
SQLite  (version depends on the host)
通过已选择的驱动列出表、集合或键
db sqlite -c \sandbox\db\shop.sqlite | db -t
name	type
orders	table
products	table
通过已选择的驱动显示结构
db sqlite -c \sandbox\db\shop.sqlite | db -s products
cid	name	type	notnull	dflt_value	pk
0	id	INTEGER	0	NULL	1
1	sku	TEXT	1	NULL	0
2	name	TEXT	1	NULL	0
3	category	TEXT	1	NULL	0
4	price	REAL	1	NULL	0
5	active	INTEGER	1	1	0
通过已选择的驱动预览记录
db sqlite -c \sandbox\db\shop.sqlite | db -n products 2
id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.9	1
2	SHOE-2	Trail shoe	shoes	109.0	1
通过已选择的驱动搜索
db sqlite -c \sandbox\db\shop.sqlite | db -f products "shoe"
id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.9	1
2	SHOE-2	Trail shoe	shoes	109.0	1
通过已选择的驱动列出数据库或命名空间
db sqlite -c \sandbox\db\shop.sqlite | db -l
seq	name	file
0	main	sandbox/db/shop.sqlite
执行已选择驱动的原生命令或查询
db sqlite -c \sandbox\db\shop.sqlite | db : SELECT COUNT(*) AS total FROM products
total
4
Time  (varies) ms
通过已选择的驱动导出
db sqlite -c \sandbox\db\shop.sqlite | db -o products -j
[
  {
    "id": 1,
    "sku": "SHOE-1",
    "name": "City shoe",
    "category": "shoes",
    "price": 79.9,
    "active": 1
  },
  {
    "id": 2,
    "sku": "SHOE-2",
    "name": "Trail shoe",
    "category": "shoes",
    "price": 109.0,
    "active": 1
  },
  {
    "id": 3,
    "sku": "BAG-1",
    "name": "Canvas bag",
    "category": "bags",
    "price": 44.5,
    "active": 1
  },
  {
    "id": 4,
    "sku": "HAT-1",
    "name": "Summer hat",
    "category": "accessories",
    "price": 25.0,
    "active": 0
  }
]
拒绝不支持的驱动
db sqlite -c \sandbox\db\shop.sqlite | db -a products : {"sku":"NEW-1","name":"Sample","category":"test","price":5,"active":1}
Inserted  1
ID        5
通过所选驱动更新数据
db sqlite -c \sandbox\db\shop.sqlite | db -w products sku HAT-1 : {"price":24}
Updated  1
通过所选驱动删除数据
db sqlite -c \sandbox\db\shop.sqlite | db -d products sku HAT-1
Deleted  1
通过当前驱动保存连接
db sqlite -c \sandbox\db\shop.sqlite | db -m demo
Saved  demo
列出或检查当前驱动的已保存连接
db sqlite -k
No saved connections
使用当前驱动的已保存连接进行连接
db sqlite -K absent
Saved connection not found: absent
删除当前驱动的已保存连接
db sqlite -M absent
Saved connection not found: absent
断开已选择的驱动
db sqlite -c \sandbox\db\shop.sqlite | db -e
+
通过已选择的驱动创建转储
db sqlite -c \sandbox\db\shop.sqlite | db dump tmp/sample-db.sql
Saved  sandbox/tmp/sample-db.sql
通过已选择的驱动载入转储或脚本
db sqlite -c \sandbox\db\shop.sqlite | db load db/sqlite.sql
SQLite error: table products already exists

本示例使用的文件: sandbox/db/sqlite.sql

该示例使用受保护的 /sandbox/ 文档工作区中的文件或目录。

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  sku TEXT UNIQUE NOT NULL,
  name TEXT NOT NULL,
  category TEXT NOT NULL,
  price REAL NOT NULL,
  active INTEGER NOT NULL DEFAULT 1
);
INSERT INTO products (sku,name,category,price,active) VALUES
('SHOE-1','City shoe','shoes',79.90,1),
('SHOE-2','Trail shoe','shoes',109.00,1),
('BAG-1','Canvas bag','bags',44.50,1);

相关文档

当前公开版本

v1.3.42026-11-01

生产级完善

db 的当前稳定版本。db 记住一个已安装的数据库驱动,并把统一的短命令转发给它,同时保留数据库引擎自己的原生语言。