mysql

mysql 连接 MySQL 或 MariaDB,检查结构和行数据,执行定向修改、表导出、原生 SQL,并创建 SQL 转储。

数据库版本 1.1.4稳定别名: mariadb
lil-terminal

概览

mysql 同时服务 MySQL 和 MariaDB:密码不会进入命令历史,常用的结构和行操作都有短选项,: 后仍可直接执行原生 SQL。

表、行与原生 SQL

MySQL 与 MariaDB 都是客户端/服务器式关系数据库。可以按“数据库 → 表 → 行与列 → 索引与事务”来理解:表结构约束数据形状,SQL 面向的是行集合,而不是逐步修改文件。mysql 驱动同时服务 MySQL 与 MariaDB;需要引擎特有能力时,仍可在 : 后使用原生 SQL。

语法

lil-terminal
mysql [options] · mysql : <sql>

参考

mysql

显示当前 MySQL / MariaDB 连接

mysql -c <host> <user> [database] [-p <port>] [-s <socket>] [-charset <charset>] [-n] [-m [name]]

连接;除非使用 -n,否则密码会单独询问

-use <database>

选择其他数据库

-l

列出数据库

-t

列出表和视图

-s <table>

显示列和数据类型

-n <table> [rows]

预览表行

-f <table> <text> [rows]

在表的各列中查找文本

-o <table> [-j|-csv] [file] [-f]

导出表行

-a <table> : <json>

从 JSON 对象插入一行

-w <table> <field> <value> : <json>

用 JSON 对象更新匹配的行

-d <table> <field> <value>

删除匹配的行

-m [name]

把当前连接保存到 .lil.key;默认使用数据库名

-M <name>

删除已保存的连接

-k [name]

列出已保存的连接,或检查其中一个但不显示密码

-K <name>

使用已保存的连接进行连接

-e

断开连接并清除连接信息

mysql : <sql>

执行原生 SQL

mysql load <file.sql>

执行文件中的 SQL

mysql dump [file.sql] [-f]

创建结构和数据转储

mariadb [options]

@mysql 的别名

用途

mysql 连接 MySQL 或 MariaDB 服务器,不是打开本地 SQLite 文件。mariadb 是同一驱动的别名。

操作步骤

mysql -c localhost demo shop 会单独隐藏输入密码。-n 用于无密码连接,-p 设置端口,-s 设置 socket,-charset 设置字符集。-t/-s/-n/-f 查看数据,-o 导出,mysql : 执行 SQL,dump/load 操作 SQL 脚本。

限制与安全

-a/-w/-d 会修改真实数据,可能影响多行。请使用受限账户并备份。-m 可能把凭据存入 .lil.key。单表导出上限 100,000 行,load 文件上限 32 MiB;需要 PHP MySQLi 和服务器连接。

交互式 sandbox 预览

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

检查 MySQL / MariaDB 表

安装与管理

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

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

Base 包

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

install mysql
Minimum 包

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

install mysql -m
精确公开版本

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

install mysql -v 1.1.4
检查或升级

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

upgrade mysql
删除模块

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

install mysql -u

示例

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

检查 MySQL / MariaDB 表
mysql -c localhost demo shop
Status    connected
Server    MySQL / MariaDB
Host      localhost:3306
User      demo
Database  shop
Charset   utf8mb4
连接;除非使用 -n,否则密码会单独询问
mysql -c localhost demo shop -n
Status    connected
Server    MySQL / MariaDB
Host      localhost:3306
User      demo
Database  shop
Charset   utf8mb4
连接;除非使用 -n,否则密码会单独询问
mysql -c localhost demo shop -p 3307 -charset utf8mb4
Status    connected
Server    MySQL / MariaDB
Host      localhost:3307
User      demo
Database  shop
Charset   utf8mb4
连接;除非使用 -n,否则密码会单独询问
mysql -c localhost demo shop -s /tmp/mysql.sock -n
Status    connected
Server    MySQL / MariaDB
Host      localhost:3306
User      demo
Database  shop
Charset   utf8mb4
显示当前 MySQL / MariaDB 连接
mysql
Status    connected
Database  shop
Charset   utf8mb4
选择其他数据库
mysql -use shop
Status    connected
Database  shop
列出数据库
mysql -l
shop
列出表和视图
mysql -t
products	BASE TABLE
显示列和数据类型
mysql -s products
Field	Type	Null	Key	Default	Extra
id	bigint unsigned	NO	PRI	NULL	auto_increment
sku	varchar(64)	NO	UNI	NULL	
name	varchar(180)	NO		NULL	
category	varchar(80)	NO		NULL	
price	decimal(10,2)	NO		NULL	
active	tinyint(1)	NO		1	
预览表行
mysql -n products 2
id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.90	1
2	BAG-1	Canvas bag	bags	44.50	1
在表的各列中查找文本
mysql -f products "shoe"
id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.90	1
导出表行
mysql -o products -j
[
  {
    "id": 1,
    "sku": "SHOE-1",
    "name": "City shoe",
    "category": "shoes",
    "price": "79.90",
    "active": 1
  },
  {
    "id": 2,
    "sku": "BAG-1",
    "name": "Canvas bag",
    "category": "bags",
    "price": "44.50",
    "active": 1
  }
]
导出表行
mysql -o products -csv tmp/products.csv
Saved  sandbox/tmp/products.csv
处理不存在的表
mysql -o products -j tmp/products.json -f
Saved  sandbox/tmp/products.json
从 JSON 对象插入一行
mysql -a products : {"sku":"NEW-1","name":"Sample","category":"test","price":5,"active":1}
Inserted  1
ID        3
用 JSON 对象更新匹配的行
mysql -w products sku SHOE-1 : {"price":75}
Updated  1
删除匹配的行
mysql -d products sku SHOE-1
Deleted  1
执行原生 SQL
mysql : SELECT COUNT(*) AS total FROM products
total
2
Time  (varies) ms
创建结构和数据转储
mysql dump tmp/shop.sql
Saved   sandbox/tmp/shop.sql
Tables  1
Views   0
执行文件中的 SQL
mysql load db/mysql.sql
MySQL error 1050: Table 'products' already exists
把当前连接保存到 .lil.key;默认使用数据库名
mysql -m demo
Saved  demo
列出已保存的连接,或检查其中一个但不显示密码
mysql -k
No saved connections
使用已保存的连接进行连接
mysql -K missing
Saved connection not found: missing
删除已保存的连接
mysql -M missing
Saved connection not found: missing
断开连接并清除连接信息
mysql -e
+
@mysql 的别名
mariadb -t
products	BASE TABLE
连接;除非使用 -n,否则密码会单独询问
mysql -c localhost demo shop -p 99999
Invalid database port

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

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

CREATE DATABASE IF NOT EXISTS shop CHARACTER SET utf8mb4;
USE shop;
CREATE TABLE products (id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, sku VARCHAR(64) UNIQUE NOT NULL, name VARCHAR(180) NOT NULL, category VARCHAR(80) NOT NULL, price DECIMAL(10,2) NOT NULL, active TINYINT(1) NOT NULL DEFAULT 1);
INSERT INTO products(sku,name,category,price,active) VALUES ('SHOE-1','City shoe','shoes',79.90,1),('BAG-1','Canvas bag','bags',44.50,1);

相关文档

当前公开版本

v1.1.42026-11-01

生产级完善

mysql 的当前稳定版本。mysql 连接 MySQL 或 MariaDB,检查结构和行数据,执行定向修改、表导出、原生 SQL,并创建 SQL 转储。