学习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
);

- end -#

© 2025 –   海牧羽工厂 HMY Factory