在命令行里键入以下命令:

1
sqlite3

如果你按照上一个章节中那样配置好了环境,应该可以看到以下输出。

1
2
3
# SQLite version 3.43.1 2023-09-11 12:01:27
# Enter ".help" for usage hints.
# sqlite>

看到输入提示符变成“sqlite>”,我们就进入了sqlite的命令行。

基本语句

数据库有四个基本操作CRUD,即Create增、Read查、Update改、Delete删,在SQL中分别对应以下语句。

  • 增:CREATE, INSERT
  • 查:SELECT
  • 改:UPDATE
  • 删:DELETE, DROP

创建一个表

使用以下命令来创建一个表,注意所有的SQL语句末尾都要有分号。

1
CREATE TABLE 表名 ('列名' 数据类型, ...);

不同的数据库可能对相同的类型有不同的名称、不同的长度、数据范围
以sqlite为例,常用的数据类型有以下几种:

数据类型 描述
NULL 空值NULL
INTEGER 整数,具体位数取决于插入数据的大小
REAL 8位IEEE浮点数
TEXT 字符串
BLOB 二进制大对象(Binary Large Object)

另外,SQLite还提供了两个修饰符:NOT NULLUNIQUE,分别表示这个字段不能为空,以及这个字段必须唯一。

根据我们的需求,创建一个这样的表:

1
CREATE TABLE books ('title' TEXT NOT NULL, 'price' REAL, 'sales' INTEGER, 'category' TEXT);

我们先把一些数据拷贝到books.csv中(csv是Comma-Separated Values,逗号分隔的值的缩写)

数据是ChatGPT生成的,所以不要在意一些不合理的小细节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
The Great Gatsby,50.99,4,Fiction
To Kill a Mockingbird,25.99,3,Fiction
Pride and Prejudice,40.99,2,Fiction
1984,35.99,1,Science Fiction
The Catcher in the Rye,60.99,5,Fiction
Animal Farm,30.5,2,Fiction
The Hobbit,45,4,Fantasy
The Lord of the Rings,55.99,3,Fantasy
Harry Potter and the Sorcerer's Stone,20,1,Fantasy
The Chronicles of Narnia,15.98,5,Fantasy
Moby Dick,45.99,3,Fiction
The Odyssey,30.99,2,Classic
To the Lighthouse,40,4,Classic
The Adventures of Tom Sawyer,25.1,2,Classic
War and Peace,50.99,4,Classic
Crime and Punishment,35.99,1,Classic
The Alchemist,55.99,2,Fiction
Fahrenheit 451,20.99,4,Science Fiction
The Picture of Dorian Gray,15.98,5,Classic
Brave New World,60.3,3,Science Fiction

将sqlite切换为csv模式并导入这个.csv文件。

1
2
.mode csv
.import books.csv books

所有以逗号开头的命令都不属于SQL,而是SQLite的语法

查看表

这样可以查看有哪些表,每个表有哪些字段:

1
.schema

这样查看表的内容:

1
SELECT 列名,... FROM 表名;

切换到box模式,这样的输出比较好看,然后我们用SELECT命令查看一下导入的数据。

1
2
.mode box
SELECT * FROM books;

“*”表示通配符,即选择所有的列,在这里相当于SELECT name, price, sales FROM books;

可以看到输出了刚刚导入的表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌───────────────────────────────────────┬───────┬───────┬─────────────────┐
│ title │ price │ sales │ category │
├───────────────────────────────────────┼───────┼───────┼─────────────────┤
│ The Great Gatsby │ 50.99 │ 4 │ Fiction │
│ To Kill a Mockingbird │ 25.99 │ 3 │ Fiction │
│ Pride and Prejudice │ 40.99 │ 2 │ Fiction │
│ 1984 │ 35.99 │ 1 │ Science Fiction │
│ The Catcher in the Rye │ 60.99 │ 5 │ Fiction │
│ Animal Farm │ 30.5 │ 2 │ Fiction │
│ The Hobbit │ 45.0 │ 4 │ Fantasy │
│ The Lord of the Rings │ 55.99 │ 3 │ Fantasy │
│ Harry Potter and the Sorcerer's Stone │ 20.0 │ 1 │ Fantasy │
│ The Chronicles of Narnia │ 15.98 │ 5 │ Fantasy │
│ Moby Dick │ 45.99 │ 3 │ Fiction │
│ The Odyssey │ 30.99 │ 2 │ Classic │
│ To the Lighthouse │ 40.0 │ 4 │ Classic │
│ The Adventures of Tom Sawyer │ 25.1 │ 2 │ Classic │
│ War and Peace │ 50.99 │ 4 │ Classic │
│ Crime and Punishment │ 35.99 │ 1 │ Classic │
│ The Alchemist │ 55.99 │ 2 │ Fiction │
│ Fahrenheit 451 │ 20.99 │ 4 │ Science Fiction │
│ The Picture of Dorian Gray │ 15.98 │ 5 │ Classic │
│ Brave New World │ 60.3 │ 3 │ Science Fiction │
└───────────────────────────────────────┴───────┴───────┴─────────────────┘

当然,不一定要选择所有的列,如果输入SELECT name FROM books;就只会显示所有的书名。试一试吧!

打开数据库

输入.quit退出SQLite。

你会发现,SQLite为你在目录下自动创建了一个名为“books.db”的文件。

下一次打开数据库只需要输入sqlite3 books.db即可恢复原来的数据。

本文属于系列文章:SQL学习笔记