SQLite3 数据库

一、SQLite3 命令

1. 基本命令

  • .tables:用于查看数据库中的表。
  • .headers on/off:开启或者关闭表头,方便查看表结构。
  • .mode column:使列对齐,增强数据的可读性。
  • .width 列宽1 列宽2:设置每一列的列宽,可根据数据内容进行调整。
  • .schema 表名:查看指定表的结构,包括列名、数据类型等信息。

二、SQLite3 的 SQL 语句

1. 创建表

使用 create table 语句创建表,语法为 create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型)。例如:create table students(id INTEGER, name TEXT, age INTEGER);

2. 插入数据

通过 insert into 语句向表中插入数据,语法为 insert into 表名 values(值1, 值2, 值3)。例如:insert into students values(1, 'Tom', 18);

3. 查询

  • 可以使用 select 列名1,列名2 from 表名 来查询指定列的数据,或者使用 select * from 表名 查询表中的所有数据。
  • 条件查找:使用 select * from 表名 where 列 关系运算符 值,关系运算符包括 >、<、=、!=、>=、<= 等。例如:select * from students where age > 18;
  • 模糊匹配:使用 like 进行模糊匹配,% 可以通配多个字符,_ 只能通配一个字符。例如:select * from students where name like '%o%';
  • 排序:使用 order by 进行排序,ASC 为升序排列,DESC 为降序排列。例如:select * from students order by age DESC;

4. 删除一行

使用 delect from 表名 where 列名 关系运算符 值 删除满足条件的一行数据。例如:delect from students where id = 1;

5. 删除一张表

使用 drop 表名 删除整张表。例如:drop table students;

6. 修改

使用 update 表名 set 列名=新值 where 列=值 修改表中的数据。例如:update students set age = 19 where name = 'Tom';

7. 设置主键值自动增长列

  • 主键值自动增长列的数据类型必须是 INTEGER
  • 语法为 类名 INTEGER PRIMARY KEY AUTOINCREMENT。例如:create table students(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);

8. 多表联查

  • 内连接:INNER JOIN
  • 外连接:LEFT OUTER JOIN

三、SQLite3 提供的 C/C++ API 接口

1. sqlite3_open

功能是打开数据库,如果不存在,则创建。

参数:

  • filename:数据库名称。
  • ppDb:保存数据库句柄的地址。
    返回值:成功返回 SQLITE_OK,失败返回错误码。

2. sqlite3_exec

功能是执行 SQL 语句。

参数:

  • pdb:数据库句柄。
  • sql:要执行的 SQL 语句的首地址。
  • callback:当执行 select 语句时使用到的回调函数。
  • arg:当执行 select 语句时,传递给回调函数的第一个参数。
  • errmsg:存储错误信息的地址。
    返回值:成功返回 SQLITE_OK,失败返回错误码。
cs 复制代码
//打开本目录下的stu.db文件,创建class4列表并添加数据
int main(int argc, const char *argv[])
{
	sqlite3 *pdb;
	int ret = sqlite3_open("./stu.db", &pdb);	
	if (ret != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open fail : %s\n", sqlite3_errmsg(pdb));
		return -1;
	}

	char *sql = "create table if not exists class4(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL);";

	ret = sqlite3_exec(pdb, sql, NULL, NULL, NULL);
	if (ret != SQLITE_OK)
	{
		fprintf(stderr, "sqlite3_exec fail : %s\n", sqlite3_errmsg(pdb));
		sqlite3_close(pdb);
		return -1;
	}

	sql = "insert into class4 values(NULL, \"zhangsan\", 99);";
	ret = sqlite3_exec(pdb, sql, NULL, NULL, NULL);
	if (ret != SQLITE_OK)
	{
		fprintf(stderr, "sqlite3_exec fail : %s\n", sqlite3_errmsg(pdb));
		sqlite3_close(pdb);
		return -1;
	}
	sqlite3_close(pdb);
	return 0;
}

3. 回调函数

int (*callback)(void*,int column_cnt,char**column_value,char**column_name),在使用 sqlite3_exec 执行 select 语句时,每查找到一条数据,则调用一次回调。

参数:

  • argsqlite3_exec 传递的第 4 个参数。
  • column_cnt:查找到的数据的列数。
  • column_value:查找到的一行数据的每一列值的地址的集合。
  • column_name:查找到的一行数据的每一列列名的地址的集合。
    返回值:必须返回 0。

注意事项:

  1. 每找到一行,回调被触发一次。
  2. 回调函数必须返回 0。

SQLite3思维导图:

相关推荐
金智维科技官方10 分钟前
DeepSeek接入企业系统:流程自动化新玩法
大数据·数据库·人工智能
小小龙学IT18 分钟前
Tigris:下一代无服务器数据库
数据库·云原生·serverless
凤山老林29 分钟前
ORM 框架性能调优:Spring Boot 下 N+1 查询根因治理、动态 SQL 优化与 Fetch 策略实战
数据库·spring boot·sql
laowangpython39 分钟前
昆仑通态 Mcgs Pro软件安装步骤(附安装包)Mcgs Pro 3.3.6 下载安装教程(保姆级)
java·服务器·数据库·其他
影寂ldy40 分钟前
C# 五大加密算法全套实战(AES/DES对称、RSA非对称、MD5/SHA256哈希)
开发语言·c#·哈希算法
互联网底层民工1 小时前
异步 / 多线程并发(高频八股 · 详解版)
c#
是梦终空1 小时前
计算机毕业设计279—基于SpringBoot+Vue3校园商户意见反馈系统(源代码+数据库+17000字论文+ppt)
数据库·spring boot·vue·毕业设计·课程设计·毕业论文·源代码
学无止境_永不停歇1 小时前
3. 进程状态
linux·服务器
TDengine (老段)1 小时前
TDengine 索引使用指南 — 何时建、怎么建、怎么用
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
逝水无殇1 小时前
C# 反射详解
开发语言·后端·c#