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思维导图:

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
莫回首�3 小时前
ubuntu 20.04 多网卡配置,遇到问题总结
linux·网络·ubuntu
网络安全许木3 小时前
自学渗透测试第11天(Linux压缩解压与磁盘管理)
linux·网络安全·渗透测试
rockey6275 小时前
AScript如何实现中文脚本引擎
c#·.net·script·eval·expression·function·动态脚本
科技小花6 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸6 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain6 小时前
linux个人心得22 (mysql)
数据库·mysql
lifewange6 小时前
Linux ps 进程查看命令详解
linux·运维·服务器
功德+n6 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos