SQLite 点命令
SQLite3 有一些简单却非常实用的以点号(.)开头的命令,这些命令称之为 *点命令
点命令的不同之处在于:它以点号(.)开头,却不需要以分号(;)来结尾
让我们在命令行下输入 sqlite3
进入 SQLite shell 交互界面
$ sqlite3 SQLite version 3.16.0 2016-11-04 19:09:39 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database.
.help 命令
在 sqlite3 命令的欢迎语句有提到可以使用 .help
来获取所有命令的帮助文档
你可以在任何需要帮助的时候输入
.help
来获得帮助
sqlite> .help .auth ON|OFF Show authorizer callbacks .backup ?DB? FILE Backup DB (default "main") to FILE .bail on|off Stop after hitting an error. Default OFF .binary on|off Turn binary output on or off. Default OFF .changes on|off Show number of rows changed by SQL .check GLOB Fail if output since .testcase does not match .clone NEWDB Clone data into NEWDB from the existing database .databases List names and files of attached databases .dbinfo ?DB? Show status information about the database .dump ?TABLE? ... Dump the database in an SQL text format If TABLE specified, only dump tables matching LIKE pattern TABLE. .echo on|off Turn command echo on or off .eqp on|off|full Enable or disable automatic EXPLAIN QUERY PLAN .exit Exit this program .explain ?on|off|auto? Turn EXPLAIN output mode on or off or to automatic .fullschema ?--indent? Show schema and the content of sqlite_stat tables .headers on|off Turn display of headers on or off .help Show this message .import FILE TABLE Import data from FILE into TABLE .imposter INDEX TABLE Create imposter table TABLE on index INDEX .indexes ?TABLE? Show names of all indexes If TABLE specified, only show indexes for tables matching LIKE pattern TABLE. .limit ?LIMIT? ?VAL? Display or change the value of an SQLITE_LIMIT .log FILE|off Turn logging on or off. FILE can be stderr/stdout .mode MODE ?TABLE? Set output mode where MODE is one of: ascii Columns/rows delimited by 0x1F and 0x1E csv Comma-separated values column Left-aligned columns. (See .width) html HTML <table> code insert SQL insert statements for TABLE line One value per line list Values delimited by .separator strings quote Escape answers as for SQL tabs Tab-separated values tcl TCL list elements .nullvalue STRING Use STRING in place of NULL values .once FILENAME Output for the next SQL command only to FILENAME .open ?--new? ?FILE? Close existing database and reopen FILE The --new starts with an empty file .output ?FILENAME? Send output to FILENAME or stdout .print STRING... Print literal STRING .prompt MAIN CONTINUE Replace the standard prompts .quit Exit this program .read FILENAME Execute SQL in FILENAME .restore ?DB? FILE Restore content of DB (default "main") from FILE .save FILE Write in-memory database into FILE .scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off .schema ?PATTERN? Show the CREATE statements matching PATTERN Add --indent for pretty-printing .separator COL ?ROW? Change the column separator and optionally the row separator for both the output mode and .import .shell CMD ARGS... Run CMD ARGS... in a system shell .show Show the current values for various settings .stats ?on|off? Show stats or turn stats on or off .system CMD ARGS... Run CMD ARGS... in a system shell .tables ?TABLE? List names of tables If TABLE specified, only list tables matching LIKE pattern TABLE. .testcase NAME Begin redirecting output to 'testcase-out.txt' .timeout MS Try opening locked tables for MS milliseconds .timer on|off Turn SQL timer on or off .trace FILE|off Output each SQL statement as it is run .vfsinfo ?AUX? Information about the top-level VFS .vfslist List all available VFSes .vfsname ?AUX? Print the name of the VFS stack .width NUM1 NUM2 ... Set column widths for "column" mode Negative values right-justify
每条命令的解释如下
命令 | 描述 |
---|---|
.backup ?DB? FILE | 备份 DB 数据库(默认是 "main")到 FILE 文件 |
.bail ON|OFF | 发生错误后停止。默认为 OFF |
.databases | 列出附加数据库的名称和文件 |
.dump ?TABLE? | 以 SQL 文本格式转储数据库 如果指定了 TABLE 表,则只转储匹配 LIKE 模式的 TABLE 表 |
.echo ON|OFF | 开启或关闭 echo 命令 |
.exit | 退出 SQLite 交互命令行模式 |
.explain ON|OFF | 开启或关闭适合于 EXPLAIN 的输出模式 如果没有带参数,则为 EXPLAIN on,及开启 EXPLAIN |
.header(s) ON|OFF | 开启或关闭头部显示 |
.help | 显示消息。 |
.import FILE TABLE | 导入来自 FILE 文件的数据到 TABLE 表中 |
.indices ?TABLE? | 显示所有索引的名称 如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表的索引 |
.load FILE ?ENTRY? | 加载一个扩展库。 |
.log FILE|off | 开启或关闭日志 FILE 文件可以是 stderr(标准错误)/stdout(标准输出) |
.mode MODE | 设置输出模式,MODE 可以是下列之一: csv 逗号分隔的值 column 左对齐的列 html HTML 的 <table> 代码 insert TABLE 表的 SQL 插入(insert)语句 line 每行一个值 list: 由 .separator 字符串分隔的值tabs由 Tab 分隔的值 tcl: TCL 列表元素 |
.nullvalue STRING | 在 NULL 值的地方输出 STRING 字符串 |
.output FILENAME | 发送输出到 FILENAME 文件 |
.output stdout | 发送输出到屏幕。 |
.print STRING... | 逐字地输出 STRING 字符串 |
.prompt MAIN CONTINUE | 替换标准提示符 |
.quit | 退出 SQLite 提示符 |
.read FILENAME | 执行 FILENAME 文件中的 SQL |
.schema ?TABLE? | 显示 CREATE 语句 如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表 |
.separator STRING | 改变输出模式和 .import 所使用的分隔符 |
.show | 显示各种设置的当前值。 |
.stats ON|OFF | 开启或关闭统计 |
.tables ?PATTERN? | 列出匹配 LIKE 模式的表的名称 |
.timeout MS | 尝试打开锁定的表 MS 毫秒 |
.width NUM NUM | 为 "column" 模式设置列宽度 |
.timer ON|OFF | 开启或关闭 CPU 定时器 |
.show 命令
让我们使用 .show 命令查看 SQLite 命令提示符的默认设置
sqlite>.show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "|" rowseparator: "\n" stats: off width: filename: :memory: sqlite>
确保 sqlite> 提示符与点命令之间没有空格,否则将无法正常工作。
.header 命令
.header 命令用于开启或关闭头部显示
语法:
sqlite>.header on sqlite>.header off
格式化输出
我们可以使用 .header
,.mod
,.timer
命令来格式化我们的 sql 语句输出结果
sqlite>.header on sqlite>.mode column sqlite>.timer on sqlite>
设置好了之后,我们的输出结果就会长这样的啦: 简约不简单啊
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 CPU Time: user 0.000000 sys 0.000000
.schema 命令
.schema 命令用于查看一个表(table)的建表语句
sqlite>.schema [table_name]
sqlite_master 表格
SQLite3 自带的主表 sqlite_master
中保存数据库表的关键信息
我们可以用 .schema 点命令查看 sqlite_master
的表概要
sqlite>.schema sqlite_master CREATE TABLE sqlite_master ( type text, name text, tbl_name text, rootpage integer, sql text );