文章

SQLite 数据库基础操作 1

儿童节快乐啊!最近正在忙选修课大作业。是一个QT Quick / C++的软件。也是布鲁伊相关!这里是 开源地址 ,有兴趣可以看看哦。

这次的SQLite笔记其实也是项目中的一环。但是正好考研也需要用到数据库,所以就当作复习笔记了。后面也许会把布鲁伊项目的制作过程也写一篇博客。不过要做的事情实在太多了!真希望可以不用睡觉来完成我的项目们啊。


本文大部分采用 SQL 语句,且暂时不涉及数据库的约束,仅作最简单的创建与增删改查。

创建SQLite数据库

使用命令行打开 SQLite3.exe 所在的文件夹,输入语句:

1
$ sqlite3 filename.db

此时会在文件夹内创建一个文件名为 filename.db的数据库。但此时文件并不会保存。需要先查询一下:

1
.tables

这条语句会显示当前数据库中所有的表,此时才会真正创建文件 filename.db,你可以在文件夹内看到这个文件。

如果你没有使用第一条语句而直接进入了 SQLite 中,那么请使用下面这条语句创建数据库:

1
.open filename.db

此时不需要使用 .tables 进行创建文件。当然,如果 filenam.db 已经存在,则会打开它。

创建数据表 CREATE

1
CREATE TABLE userinfo (username, password);

这条语句会在数据库中创建一个名为 userinfo 的表,其中包含两个条目:

  • username
  • password

SQLSQLite 关键字大小写都不敏感。 CREATEcreate 同样有效。但大写有助于区分关键字与表格名称,增加可读性。

数据表操作

破坏性数据表操作可能会导致不可逆后果。操作前最好做好备份!

增加条目 INSERT INTO

1
2
INSERT INTO userinfo (username, password)
VALUES ('user1', 12345);

这条语句会在 userinfo 表中添加一行条目,其中记录:

  • username 的值为 user1
  • password 的值为 12345

语句可以分行以增加可读性。一般来说 SQL 会将分号作为语句结束。

删除条目 DELETE

清空行

1
2
DELETE FROM userinfo
WHERE username = 'user1';

这条语句会清空userinfo 表中 user1 行的所有记录。

清空表

1
DELETE FROM userinfo;

这条语句会清空整个 userinfo 表。

更改条目 UPDATE

更改所有行

1
2
UPDATE userinfo
SET password = 54321;

这条语句会将 userinfo 表中所有的 password 更改为 54321

更改指定条目

1
2
3
UPDATE userinfo
SET password = 54321
WHERE username = 'user1';

该语句会将 userinfo 表中 user1password 更改为 54321

查询条目

1
SELECT * FROM userinfo;

这条语句会查询 userinfo 表中的所有数据。

数据表修改 ALTER

添加列

如果希望在已有的 userinfo 表中增加一列 country 字段,可以使用以下语法:

1
2
ALTER TABLE userinfo
ADD country;

删除列

1
2
ALTER TABLE userinfo
DROP id;

数据筛选

假设 userinfo 中包含如下条目:

1
| id | username | password | country |

我们可以使用一些关键词对数据进行筛选。

并且 AND

1
2
3
SELECT * FROM userinfo
WHERE country = 'CN'
AND id > 25;

这条语句会查询 userinfo 表中所有 countryCNid > 50 的条目。

或者 OR

1
2
3
SELECT * FROM userinfo
WHERE country = 'CN'
OR country = 'USA';

这条语句会查询 userinfo 表中所有 countryCNcountryUSA 的条目。

结合操作

你可以使用圆括号 (#) 组成复杂的表达式:

1
2
3
SELECT * FROM userinfo
WHERE id > 15
AND (country='CN' OR country='USA');

这条语句会查询 userinfo 表中所有id > 15 ,并满足 countryCNcountryUSA 的条目。

SELECT DISTINCT

因为不同的用户可能来自相同的国家,因此 useerinfocountry 条目包含许多重复项。例如:

1
2
3
4
5
6
7
8
9
10
11
username    password    country 
----------  ----------  ----------
admin       12345       CN
user1       23456       US
user2       24442       CN
user3       23244       CN
user4       46361       AU
user5       23244       US
user6       46361       CN
user5       232441445   US
...         ...         ...

如果你希望查看用户都来自哪些国家而不产生重复项,可以使用以下语句:

1
2
SELECT DISTINCT country
FROM userinfo;

输出类似如下:

1
2
3
4
5
| country |
+---------+
| CN      |
| US      |
| AU      |
本文由作者按照 CC BY 4.0 进行授权