学习SQL#
Data: 2026-04-01 17:34:28
首先是运行。 只需要输入 sqlite3 就可以了。
kehongli@kehongdeMacBook-Air learnsql % sqlite3
SQLite version 3.51.0 2025-06-12 13:14:41
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> 输入 .help 后会显示各种重要的 SQLite 点命令的列表:
sqlite> .help
.archive ... 管理SQL归档文件
.auth ON|OFF 显示授权器回调信息
.backup ?DB? FILE 备份数据库(默认"main"库)到指定文件
.bail on|off 遇到错误后停止执行,默认关闭
.cd DIRECTORY 切换工作目录至指定目录
.changes on|off 显示SQL语句影响的行数
.check GLOB 若.testcase后输出不匹配则执行失败
.clone NEWDB 将现有数据库数据克隆至新数据库
.connection [close] [#] 打开或关闭辅助数据库连接
.crlf ?on|off? 是否使用\r\n作为行结束符
.databases 列出已附加数据库的名称和文件路径
.dbconfig ?op? ?val? 查看或修改sqlite3_db_config()配置项
.dbinfo ?DB? 显示数据库状态信息
.dbtotxt 数据库文件的十六进制转储
.dump ?OBJECTS? 将数据库内容导出为SQL语句
.echo on|off 开启或关闭命令回显
.eqp on|off|full|... 启用或禁用自动EXPLAIN QUERY PLAN
.excel 在下一表格软件中展示下条命令输出
.exit ?CODE? 以指定返回码退出程序
.expert 实验性功能,为查询推荐索引
.explain ?on|off|auto? 设置EXPLAIN格式化模式,默认自动
.filectrl CMD ... 执行各类sqlite3_file_control()操作
.fullschema ?--indent? 显示数据库架构和sqlite_stat表内容
.headers on|off 开启或关闭列名标题显示
.help ?-all? ?PATTERN? 显示匹配指定模式的帮助文本
.hex-rekey OLD NEW NEW 以十六进制格式修改数据库加密密钥
.import FILE TABLE 从指定文件导入数据至指定表
.indexes ?TABLE? 显示索引名称(可指定表)
.intck ?STEPS_PER_UNLOCK? 对数据库执行增量完整性检查
.limit ?LIMIT? ?VAL? 查看或修改SQLITE_LIMIT配置值
.lint OPTIONS 报告潜在的数据库架构问题
.log FILE|on|off 开启/关闭日志,文件可指定为标准错误/输出
.mode ?MODE? ?OPTIONS? 设置输出显示模式
.nonce STRING 匹配随机数时单次命令暂停安全模式
.nullvalue STRING 用指定字符串替代NULL值显示
.once ?OPTIONS? ?FILE? 仅将下条SQL命令输出写入指定文件
.open ?OPTIONS? ?FILE? 关闭现有数据库并重新打开指定文件
.output ?FILE? 输出重定向至文件,无参数则输出至控制台
.parameter CMD ... 管理SQL参数绑定
.print STRING... 打印指定字面字符串
.progress N 每执行N个操作码调用一次进度处理程序
.prompt MAIN CONTINUE 替换默认命令提示符
.quit 停止解析输入流,主程序直接退出
.read FILE 从指定文件/命令输出读取并执行内容
.recover 从损坏数据库中尽可能恢复数据
.rekey OLD NEW NEW 修改数据库加密密钥
.restore ?DB? FILE 从指定文件恢复数据库(默认恢复main库)
.save ?OPTIONS? FILE 将数据库写入文件(.backup别名)
.scanstats on|off|est 开启/关闭sqlite3_stmt_scanstatus()指标统计
.schema ?PATTERN? 显示匹配指定模式的CREATE建表语句
.separator COL ?ROW? 修改列分隔符和行分隔符
.session ?NAME? CMD ... 创建或管理会话
.sha3sum ... 计算数据库内容的SHA3哈希值
.shell CMD ARGS... 在系统Shell中执行指定命令
.show 显示各项设置的当前值
.stats ?ARG? 显示统计信息或开启/关闭统计
.system CMD ARGS... 在系统Shell中执行指定命令
.tables ?TABLE? 列出匹配LIKE模式的表名
.text-rekey OLD NEW NEW 以文本格式修改数据库加密密钥
.timeout MS 打开锁定表的超时时间(毫秒)
.timer on|off 开启或关闭SQL执行计时
.trace ?OPTIONS? 执行时输出每条运行的SQL语句
.version 显示源码、库和编译器版本信息
.vfsinfo ?AUX? 显示顶层虚拟文件系统信息
.vfslist 列出所有可用的虚拟文件系统
.vfsname ?AUX? 打印虚拟文件系统栈名称
.width NUM1 NUM2 ... 设置列输出的最小宽度
.www 在网页浏览器中展示下条命令输出举个例子,比如说 ,我们使用 .show 来查看当前的配置。
sqlite> .show
echo: off
eqp: off
explain: auto
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: :memory:然后我们想设置 header 和 mode 、timer 。
就:
sqlite> .headers on
sqlite> .mode column
sqlite> .timer on
sqlite> .show
echo: off
eqp: off
explain: auto
headers: on
mode: column --wrap 60 --wordwrap off --noquote
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: :memory:这样就改配置了。
再举个例子,查看,.schema ?PATTERN? 显示匹配指定模式的CREATE建表语句。
这个 sqlite 有一个主表,是内置且唯一的,叫 sqlite_master 。
如果要看它的结构,就使用 .schema sqlite_master 指令。
sqlite> .schema sqlite_master
CREATE TABLE sqlite_master (
type text,
name text,
tbl_name text,
rootpage integer,
sql text
);