一、SQLite3数据库概述

SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。
相对于其它数据库,SQLite具有以下优势:
1.不需要配置,不需要安装和管理
2.不需要一个单独的服务器进程或操作的系统(无服务器的)
3.一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上
4.非常小,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB
5.自给自足,不需要任何外部的依赖
6.完全兼容ACID,允许从多个进程或线程安全访问
7.支持SQL92(SQL2)标准的大多数查询语言的功能
8.使用ANSI-C编写的,并提供了简单和易于使用的API
9.可在UINX(Linux,Max OS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行

本文进行操作示例时使用的表格样例如下:
数据库名:class
表格名:student

id name sex age score
2301 zongrui male 15 89
2302 tingyu female 15 87
2303 miku female 16 92
2304 liqiang male 17 95
2305 hailiang male 16 81
2306 jiade male 14 77
2307 tianyu male 17 85

Ubuntu版本:22.04.2
Linux内核版本:6.2.0-32

二、安装SQLite3

2.1 网络安装

step1:安装数据库系统Sqlite3操作软件命令:

sudo apt-get install sqlite3

step2:安装Sqlite3数据库开发支持库:

sudo apt-get install libsqlite3-dev

step3:安装Sqlite3图形化管理界面DB Browser for SQLite(用户可选择性安装):

sudo apt-get install sqlitebrowser

step4:检查是否安装成功,如果成功,输入以下命令可显示SQLite3版本信息。

sqlite3 --version

在这里插入图片描述

2.2 手动安装

step1:从SQLite官网上下载源码压缩包(笔者本人下载的是sqlite-autoconf-3430100.tar.gz)SQLite官网入口->
在这里插入图片描述
在这里插入图片描述

step2:将源码压缩包拷贝到Linux指定文件夹下。
step3:使用下面的命令解压,解压后生成一个名为sqlite-autoconf-3430100的文件夹。

tar -zxvf sqlite-autoconf-3430100.tar.gz

在这里插入图片描述

step4:进入解压后的sqlite-autoconf-3430100文件夹查看文件目录,发现没有makefile文件,但是有configure这个文件

cd sqlite-autoconf-3430100
ls

在这里插入图片描述

step5:执行以下命令,将其安装到你想要的指定路径下,笔者是安装在libo文件夹下的名为sqlite3的文件夹,安装时如果路径中没有该文件夹,在安装后会自动创建一个文件夹。

./configure --prefix=/home/qinglan/libo/sqlite3

注意:这里输入的路径是绝对路径

备注: 源码的安装一般由3个步骤组成: 配置 (configure)、编译 (make) 、安装(make install)
执行以下指令
/configure --prefix=/home/qinglan/libo/sqlite3
make
make install
后将自动生成目录sqlite3,且该软件所有的文件都被复制到这个目录。
使用–prefix的优点: 维护方便、卸载软件或移植软件方便。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净,移植软件只需拷贝整个目录到另外一个机器即可(前提是相同的操作系统)。
如果不指定prefix,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share。要卸载这个程序,要么在原来的make目录下用一次make uninstall (前提是make文件指定过uninstall) ,要么去上述目录里面把相关的文件一个个手工删掉,相对来说没有那么方便。

step6:执行make和make install,执行此过程需要花点时间。

make
make install

step7:检查是否安装成功,如果成功,输入以下命令可显示SQLite3版本信息(同网络安装)。

sqlite3 --version

三、卸载SQLite3

3.1 Linux命令行卸载

step1:输入以下命令,查看已安装的SQLite3软件包列表,这样一会儿可以查看是否真的卸载。

dpkg --list sqlite3

在这里插入图片描述
step2:在终端中输入以下命令,卸载程序和所有配置文件(需要输入密码)。

sudo apt-get --purge remove sqlite3

如果只想卸载程序但保留配置文件,请输入以下命令:

sudo apt-get remove sqlite3

在这里插入图片描述

step3:再次输入step1中的命令,查看是否卸载。
在这里插入图片描述

3.2 进入sqlite文件夹卸载

step1:进入解压后的sqlite目录下,和手动安装过程一样。
step2:执行./configure,再执行make(若make失败,就删除目录中的sqlite3文件)
step3:执行make uninstall,即可成功卸载。

四、SQLite3常用命令

输入命令行sqlite3,则进入数据库编辑模式

在这里插入图片描述

所有命令都是在 sqlite> 后输入
系统命令以 ".“开头,普通命令以”;"结束。

注意:SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB 和 glob 在 SQLite 的语句中就有不同的含义。

4.1 常用系统命令

.schema student                     --查看名字为student的表的结构
.quit或.exit或.q                     --退出数据库
.help                               --查看帮助信息
.database或.databases               --查看数据库
.tables或.ta                        --显示数据库中所有的表的表名
.output                             --查询的结果输出到文件,如:.output student.txt
.show                               --显示各种设置的当前值
.head on                            --查询时显示列名称

4.2 常用普通命令

4.2.1 创建或打开一个数据库

sqlite3 class.db(或sqlite3 class)

创建一个名字为sql1的数据库,如已经存在,则是打开这个名为sql1数据库.

在这里插入图片描述

注意:此命令直接在shell中输入,不要在sqlite3环境中输入。

4.2.2 创建一张新表

create table student (id int, name char, sex char, age int, score int);

括号内的id、name、sex、age、score都是字段名称,字段名称后跟着的int、char是字段类型,每个字段用逗号隔开。

在这里插入图片描述

4.2.3 向表中插入一条完整记录

insert into student values(2301, 'zongrui', 'male', 15, 89);

或者

insert into student(id, name, sex, age, score) values(2301, 'zongrui', 'male', 15, 89);

括号内的『2301, ‘zongrui’, ‘male’, 15, 89』字符串需要用单引号或双引号括起来。若没有返回错误信息,则表示插入成功。

在这里插入图片描述

4.2.4 一次性插入多个记录

insert into student values(2302, 'tingyu', 'female', 15, 87),(2303, 'miku', 'female', 16, 92),(2304, 'liqiang', 'male', 17, 95);

各个记录之间要用逗号隔开。

在这里插入图片描述

4.2.5 查看非格式化数据表的全部内容

select * from student; 

在这里插入图片描述

4.2.6 查看格式化数据表的全部内容

.header on                                     --设置显示表头(即显示每列的字段名) 
.mode column                                   --设置以列的形式展示结果
select * from student; 

在这里插入图片描述
另外,可以用如下命令改变列的宽度

.width 10 30 20           -- 设置第一列的宽度为 10,第二列的宽度为 30,第三列的宽度为 20

每一列的宽度数中间用空格隔开。

在这里插入图片描述

备注:有的教程中在每一列的宽度数中间加了逗号(.width 10,30,20 ),笔者本人也亲自做了尝试,加逗号之后除第一列之外,其余列的宽度均未发生改变。

4.2.7 查看数据表中部分字段(列)记录

select id from student;                                   --查看id一列的记录
select id,name from student;                              --查看id和name两列的记录

在这里插入图片描述

4.2.8 查看数据表中数据记录的数量

select count(*) from student;                  --查看表中总共有多少名同学的信息

在这里插入图片描述

4.2.9 查看数据表的结构

pragma table_info(student);

此命令将显示数据表的列名、数据类型和约束等信息。

在这里插入图片描述

4.2.10 按字段排序

select * from student order by age DESC;                 --按照年龄降序排列

DESC为降序,AEC为升序

在这里插入图片描述

4.2.11 按照某个条件筛选记录

select * from student where age = 16;                            --筛选年龄等于16岁的记录(此处等号既可用“=”也可用“==”)
select * from student where age != 16;                           --筛选年龄不等于16岁的记录(此处不等于号既可用“!=”也可用“<>”)
select * from student where age < 15 and sex = 'male';           --筛选年龄小于15岁并且性别为男性的记录
select * from student where age = 14 or age = 15 or age = 16;    --筛选年龄为14岁、15岁或者16岁的记录
select * from student where age between 14 and 16;               --筛选年龄在14岁~16岁的记录
select * from student where age in (14, 15, 16);                 --筛选年龄为14岁、15岁或者16岁的记录
select * from student where age not in (15, 16);                 --筛选年龄不是15岁和16岁的记录

在这里插入图片描述

4.2.12 更新记录

update student set name = "chuyin" where id = 2303;             --把学号为2303的名字改为“chuyin”
update student set name = "miku", score = 93 where id = 2303;   --把学号为2303的名字改为“miku”,分数改为93

在这里插入图片描述

4.2.13 从数据表中提取指定行

select * from student limit 3;                       --从头开始提取3个记录
select * from student limit 3 offset 2;              --从第三位开始提取3个记录

在这里插入图片描述

4.2.14 数据表中添加新字段(列)

alter table student add column address char;           --将数据表中添加『地址(address)』字段

在这里插入图片描述

4.2.15 向数据表中一列添加相同数据

update student set address='beijing';                 --将表中地址字段全部设置为『beijing』

在这里插入图片描述

4.2.16 重新命名表

alter table student rename to student_new;            --将表名student改为student_new

在这里插入图片描述

4.2.17 把原来的表里面的需要的列复制到一个新表

create table student as select id,name,sex,age,score from student_new;        --把student_new数据表中的学号、姓名、性别、年龄、分数一栏复制到新建数据表student中

在这里插入图片描述

4.2.18 删除记录

delete from student where id=2305;                  --删除学号为2305的记录

在这里插入图片描述

4.2.19 删除整个数据表

drop table student;

在这里插入图片描述

4.2.20 删除一列数据

SQLite3不支持直接删除一列数据,可通过4.2.17的方式新建一个表,再把除要删除之外的其它列复制到新表中,然后采用4.2.19的方式删除旧数据表,最后采用4.2.16的方式将新数据表重命名为原来的名字,也能达到删除一列数据的效果。

写在最后

以上只是笔者本人列出的关于SQLite的比较常用的命令,属于入门级别,SQLite数据库虽小,但功能是很强大的,还有很多的功能亟待我们解锁。
整理过程中参考了一些其它老师的书或文章,在此表示感谢!如果本文有任何错误之处,还望指出!非常感谢!


参考书籍及文章

[1] [美]Grant Allen,Mike Ovens《SQLite权威指南》(第二版),杨谦 刘义宣 谢志强译,电子工业出版社;
[2] SQLite数据库 简介、特点、优势、局限性及使用 网页链接
[3] 百度百科;
[4] linux下sqlite安装及基本使用 网页链接
[5] 菜鸟教程 SQLite教程;
[6] ./configure –prefix 命令用法 网页链接
[7] Linux下Sqlite3数据库操作 网页链接

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐