sqlite命令行工具

本文介绍了sqlite3命令行工具的基本使用方法,包括创建数据库、表及数据插入,同时演示了如何通过元命令进行数据查询、格式调整和输出管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqlite3命令行工具 - By Dorayo

sqlite3命令行工具是基于终端的SQLite软件,可以查询交互,并且可以多种格式显示结果。它也可以用在脚本中。

打开终端,键入如下命令:

~  sqlite3 test.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite>

.help命令是sqlite3的元命令工具之一,它列出了sqlite3所有的元命令。

.exit 和 .quit 命令退出sqlite3会话。我们还可以使用组合键Ctrl + D 退出sqlite3。

.databases命令显示了连接数据库。

.tables表命令列出可用的表。

创建一个数据库

使用sqlite3命令行工具来创建一个新的数据库文件:

$ sqlite3 test.db

这里我们创建一个新的test.db数据库。如果文件存在,则打开数据库。

创建数据库表

CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER);
INSERT INTO "Cars" VALUES(1,'Audi',52642);
INSERT INTO "Cars" VALUES(2,'Mercedes',57127);
INSERT INTO "Cars" VALUES(3,'Skoda',9000);
INSERT INTO "Cars" VALUES(4,'Volvo',29000);
INSERT INTO "Cars" VALUES(5,'Bentley',350000);
INSERT INTO "Cars" VALUES(6,'Citroen',21000);
INSERT INTO "Cars" VALUES(7,'Hummer',41400);
INSERT INTO "Cars" VALUES(8,'Volkswagen',21600);

基本sqlite3元命令

sqlite> .tables
Cars

.tables命令显示可用的表。

sqlite> SELECT * FROM cars;
1|Audi|52642
2|Mercedes|57127
3|Skoda|9000
4|Volvo|29000
5|Bentley|350000
6|Citroen|21000
7|Hummer|41400
8|Volkswagen|21600

SELECT查询语句的输出默认情况下是按行输出,行分隔符是|

sqlite> .separator :
sqlite> SELECT * FROM cars;
1:Audi:52642
2:Mercedes:57127
3:Skoda:9000
4:Volvo:29000
5:Bentley:350000
6:Citroen:21000
7:Hummer:41400
8:Volkswagen:21600

上面使用了新的分隔符:

还有其他几个可用的输出模式。下面的示例显示列的输出模式:

sqlite> .mode column
sqlite> .headers on
sqlite> SELECT * FROM cars;
Id          Name        Price
----------  ----------  ----------
1           Audi        52642
2           Mercedes    57127
3           Skoda       9000
4           Volvo       29000
5           Bentley     350000
6           Citroen     21000
7           Hummer      41400
8           Volkswagen  21600
sqlite> .width 15 18
sqlite> SELECT Name, Price FROM cars;
Name             Price
---------------  ------------------
Audi             52642
Mercedes         57127
Skoda            9000
Volvo            29000
Bentley          350000
Citroen          21000
Hummer           41400
Volkswagen       21600

在这里,我们改变列宽。第一列将15个字符宽,第二列是18。

sqlite> .show
echo: off
      eqp: off
  explain: off
  headers: on
     mode: column
nullvalue: ""
   output: stdout
separator: ":"
    stats: off
    width: 15 18

.show 命令列出各种设置。这些包括输出模式,在列表模式下使用的分隔符和是否显示头部。

sqlite> .schema Cars
CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER);

.schema 命令显示表的结构。它返回创建表的DDL SQL。

.prompt 命令可以改变的sqlite3的提示。

sqlite> .prompt "> " ". "
> SELECT * FROM Cars
. LIMIT 2;
Id               Name                Price
---------------  ------------------  ----------
1                Audi                52642
2                Mercedes            57127

有两个提示。最主要是第一个提示,另一个是继续提示。默认的主提示符是’sqlite>’ 和默认的继续提示’…>’。

从shell执行SQL

$ sqlite3 test.db "SELECT * FROM Cars;"

Dumping tables

我们将使用.dump命令来转储。

sqlite> .dump Cars
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER);
INSERT INTO "Cars" VALUES(1,'Audi',52642);
INSERT INTO "Cars" VALUES(2,'Mercedes',57127);
INSERT INTO "Cars" VALUES(3,'Skoda',9000);
INSERT INTO "Cars" VALUES(4,'Volvo',29000);
INSERT INTO "Cars" VALUES(5,'Bentley',350000);
INSERT INTO "Cars" VALUES(6,'Citroen',21000);
INSERT INTO "Cars" VALUES(7,'Hummer',41400);
INSERT INTO "Cars" VALUES(8,'Volkswagen',21600);
COMMIT;

.dump 命令显示了我们所必需的SQL创建表的信息。

sqlite> .output cars2.sql
sqlite> .dump Cars

我们也可以将输出重定向到一个文件中。

.output命令会将输出重定向cars2.sql文件。

Reading SQL

我们可以从一个文件名读取SQL语句 .read 命令。

sqlite> .tables Cars
Cars
sqlite> DROP TABLE Cars;
sqlite> .tables Cars
sqlite> .read cars.sql
sqlite> .tables Cars
Cars
sqlite> SELECT * FROM Cars WHERE Id=1;
Id          Name        Price     
----------  ----------  ----------
1           Audi        52642 

The .sqlite_history file

命令和语句中存档于 .sqlite_history文件。该文件位于主目录。

$ tail -5 ~/.sqlite_history 

使用tail命令,我们显示最后五项。

Resource file

sqlite3 工具有一个资源文件 .sqliterc 。 它位于主目录。如果没有这些文件,我们可以简单地创建它。 这些文件可以包含元命令,或常规的SQL语句。

$ cat .sqliterc 
.mode column
.header on
.nullvalue NULL  

这里是一个简单的资源文件的例子,它有三个元命令。有了资源文件,我们不需要再次执行已有的元命令。当我们开始 sqlite3 工具,他们将自动执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值