使用.help可以获取点命令的清单
命令 | 选项 | 描述 |
---|---|---|
.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 可以是下列之一:
|
.nullvalue | STRING | 在 NULL 值的地方输出 STRING 字符串。 |
.output | FILENAME | 发送输出到 FILENAME 文件。 |
.output | stdout | 发送输出到屏幕。 |
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 定时器。 |
sqlite> .databases main: E:\myfile\python\pycharm\test\sqlite3.db sqlite> sqlite> .dump book PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE book( id int primary key, sort int, name text, price real, category int, foreign key (category) references category(id) on update cascade on delete cascade ); INSERT INTO book VALUES(2,3,'Python Intro',17.5,2); COMMIT; sqlite>
格式化输出
sqlite>.header on sqlite>.mode column sqlite>.timer on sqlite>
语法 | 说明 |
---|---|
大小写 | SQLite不区分大小写,但个别命令要区分,比如GLOB和glob是不相同的。 |
注释 |
|
语句 | 以关键字开始,以分号结束,常用关键字
|
SQLite中,每一列、每个变量、每个表达式都有相关的数据类型。
可以在创建表时使用这些数据类型。
存储类 | 描述 |
---|---|
NULL | 值是一个 NULL 值。 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储。 |
亲和类型 | 描述 |
---|---|
TEXT | |
NUMERIC | |
INTEGER | |
REAL | |
NONE |
SQLite没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)。
SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。
PS E:\myfile\python\pycharm\test> sqlite3.exe test.db SQLite version 3.27.2 2019-02-25 16:06:06 Enter ".help" for usage hints. sqlite> sqlite> .databases main: E:\myfile\python\pycharm\test\test.db
PS E:\myfile\python\pycharm\test> sqlite3 test.db .dump > test.db.sql PS E:\myfile\python\pycharm\test> cat test.db.sql PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; COMMIT; PS E:\myfile\python\pycharm\test>
还可以从.sql文件中恢复数据库
$sqlite3 test.db < test.db.sql #注,该命令在window下不成功,原因不明。
PS E:\myfile\python\pycharm\test> sqlite3 sqlite3.db SQLite version 3.27.2 2019-02-25 16:06:06 Enter ".help" for usage hints. sqlite> sqlite> .database main: E:\myfile\python\pycharm\test\sqlite3.db sqlite> sqlite> attach database 'test.db' as 'test'; sqlite> sqlite> .database main: E:\myfile\python\pycharm\test\sqlite3.db test: E:\myfile\python\pycharm\test\test.db sqlite>
注意,main和temp这两个名称是保留的,所以不能被attach
sqlite> attach database 'test.db' as 'temp'; Error: database temp is already in use sqlite> sqlite> attach database 'test.db' as 'main'; Error: database main is already in use sqlite>
无法分离main和temp
如果是内存中的数据库或临时数据库,detach后对应数据库将会被摧毁,内容将会丢失。
sqlite>.databases seq name file --- --------------- ---------------------- 0 main /home/sqlite/testDB.db 2 test /home/sqlite/testDB.db 3 currentDB /home/sqlite/testDB.db sqlite> sqlite> DETACH DATABASE 'currentDB'; sqlite> .databases seq name file --- --------------- ---------------------- 0 main /home/sqlite/testDB.db 2 test /home/sqlite/testDB.db