SQLite命令


本章将带你了解SQLite程序员使用的简单且有用的命令。这些命令称为SQLite点命令,但这些命令的例外是它们不应以分号(;)终止。

让我们从键入一个简单的开始sqlite3命令提示符下的命令,它将为你提供SQLite命令提示符,你将在其中发出各种SQLite命令。

$sqlite3
SQLite version 3.3.6
Enter ".help" for instructions
sqlite>

有关可用的点命令的列表,你可以随时输入“ .help”。例如:

sqlite>.help

上面的命令将显示各种重要的SQLite点命令的列表,下表中列出了这些命令。

序号.命令与说明
1

.backup ?DB? FILE

备份数据库(默认为“主”)到FILE。

2

.bail ON|OFF

遇到错误后停止,默认关闭。

3

.databases

列出附加数据库的名称和文件。

4

.dump ?TABLE?

以SQL文本格式转储数据库,如果指定了TABLE,则仅转储与LIKE模式TABLE相匹配的表。

5

.echo ON|OFF

打开或关闭命令回显。

6

.exit

退出SQLite提示。

7

.explain ON | OFF

打开或关闭适合EXPLAIN的输出模式。没有参数,它将打开EXPLAIN。

8

.header(s) ON|OFF

打开或关闭标题显示。

9

.help

显示这则讯息。

10

.import FILE TABLE

将数据从FILE导入TABLE。

11

.indices ?TABLE?

显示所有索引的名称,如果指定了TABLE,则仅显示与LIKE模式TABLE匹配的表的索引。

12

.load FILE ?ENTRY?

加载扩展库。

13

.log FILE|off

打开或关闭登录,FILE可以是stderr / stdout。

14

.mode MODE

设置输出模式,其中MODE为以下之一:

  • csv: 逗号分隔值

  • column:左对齐的列。

  • html:HTML代码

  • insert:TABLE的SQL插入语句

  • line:每行一个值

  • list:值以.separator字符串分隔

  • tabs:制表符分隔的值

  • tcl:TCL列表元素

15

.nullvalue STRING

打印STRING代替NULL值。

16

.output FILENAME

将输出发送到FILENAME。

17

.output stdout

将输出发送到屏幕。

18

.print STRING...

打印文字STRING。

19

.prompt MAIN CONTINUE

替换标准提示。

20

.quit

退出SQLite提示。

21

.read FILENAME

在FILENAME中执行SQL。

22

.schema ?TABLE?

显示CREATE语句,如果指定了TABLE,则仅显示与LIKE模式TABLE匹配的表。

23

.separator STRING

更改输出模式和.import使用的分隔符。

24

.show

显示各种设置的当前值。

25

.stats ON|OFF

开启或关闭统计。

26

.tables ?PATTERN?

列出与LIKE模式匹配的表的名称。

27

.timeout MS

尝试打开锁定的表,以毫秒为单位。

28

.width NUM NUM

设置“列”模式的列宽。

29

.timer ON|OFF

打开或关闭CPU计时器测量。

我们试试看.show命令以查看SQLite命令提示符的默认设置。

sqlite>.show
     echo: off
  explain: off
  headers: off
     mode: column
nullvalue: ""
    output: stdout
separator: "|"
    width:
sqlite>

确保在sqlite>提示符和点命令之间没有空格,否则它将无法正常工作。

格式化输出


你可以使用以下点命令序列来格式化输出。

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

sqlite_master表


主表保存有关数据库表的关键信息,该表称为sqlite_master。你可以看到其架构如下:

sqlite>.schema sqlite_master

这将产生以下结果。

CREATE TABLE sqlite_master (
    type text,
    name text,
    tbl_name text,
    rootpage integer,
    sql text
);