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

SQLite 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.