SQLite

目录

[sqlite 命令 + 语句](#sqlite 命令 + 语句)

基本用法:

[Sqlite3 软件命令:学习如何操作数据库 -- sql语句(structure query language)](#Sqlite3 软件命令:学习如何操作数据库 -- sql语句(structure query language))

创建一个数据库:

创建一张表:

删除一张表:

插入数据:

查询语句:

修改数据:

删除数据:

[sqlite C语言编程](#sqlite C语言编程)

[sqlite_open --> int sqlite_open(char *db_name,sqlite**db)](#sqlite_open --> int sqlite_open(char *db_name,sqlite**db))

[sqlite3_exec --> int sqlite3_exec(sqlite3 *db,const char *sql,exechandler_t callback,void*arg,char **errmsg)](#sqlite3_exec --> int sqlite3_exec(sqlite3 *db,const char sql,exechandler_t callback,voidarg,char **errmsg))

[回调函数指针 --> typedef int callback(void*para,int n,char ** pvalue,char **pname)](#回调函数指针 --> typedef int callback(void*para,int n,char ** pvalue,char **pname))

[sqlite3_get_table --> int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resulttp,int *nrow,int *ncolumn,char **errmsg)](#sqlite3_get_table --> int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resulttp,int *nrow,int *ncolumn,char **errmsg))

[sqlite3_free_table --> void sqlite3_free_table(char**resultp);](#sqlite3_free_table --> void sqlite3_free_table(char**resultp);)

sqlite 命令 + 语句

基本用法:

  • "帮助"输入: .help
  • "退出"输入: .quit
  • 每条语句最后必须添加分号

Sqlite3 软件命令:学习如何操作数据库 -- sql语句(structure query language)

sqlite3命令:

  • 查看表 .tables
  • 查看表的结构 .schema
  • 打开表头 .headers on
  • 以固定的列宽呈现 .mode column

创建一个数据库:

命令:sqlite3 数据文件名.db 进入

eg: sqlite3 stu.db (database 数据库以 .db作为结尾)

.databases //查看当前数据库关联的文件名

数据库操作:sql语句

创建一张表:

create table 表名称(列名称1 数据类型,列名称2 数据类型,......);

eg: creat table stu(name text,age int,score float);

删除一张表:

drop table 表名;

eg: drop table stu;

插入数据:

给一行中的所有列赋值****insert into 表名 values (列值1,列值2,列值3,.....);

eg: insert into stu values("zhangsan",18,99.5);

给表中插入新的一列 alter table 表名 add 列名 int;

eg: alter table stu add sno int;

给指定的列给值,但是其实是在一条新纪录里面给了值,会发现其余位都是空白的

eg: insert into stu (sno) values (110);

查询语句:

用于从表中选取数据,结果被存储在一个结果表中(称为结果集)

1 select *from 表名 匹配条件; 星号(*)是选取所有列的通配符

eg: select *from stu; 查看表中所有内容

2 select 列名1 ,列名2,...... from 表名 where(匹配条件);

eg: select name from stu where score < 90;

eg: select name from stu where age in (19,30,..);

eg: select name from stu where age > 18or score > 90; (其中 or 也可以换成and)

eg: select name from stu where age like 18; (age like 18 等价于 age = 18)

eg: select name from stu where name like 'zhang**%**'; (以"zhang"开头的字符符合条件)

eg: select name from stu where name like '% ang**%**'; (含"ang"的字符符合条件)

eg: select name from stu where name like '**%**an'; (以"an"结尾的字符符合条件)

3 select *from 表名 order by 列名; 升序

eg: select name from stu order by score;
eg: select name from stu order by score desc; desc 降序

修改数据:

修改表中某一个参数 update 表名 set 要修改的列名 = 目的值 匹配条件;

eg: update stu set score = 90.5 where name == 'zhangsan';

删除数据:

删除某一行的数据 delete from 表名 匹配条件;

eg: delete from stu where name == 'zhangsan';

sqlite C语言编程

sqlite_open --> int sqlite_open(char *db_name,sqlite**db)

功能:打开数据库

参数:

  • @db_name:字符串类型,数据库文件的路径
  • @db:二级指针 sqlite3**,用于接收打开后的数据库句柄

返回值:成功,返回0 失败,返回非0

sqlite3_exec --> int sqlite3_exec(sqlite3 *db,const char *sql,exechandler_t callback,void*arg,char **errmsg)

功能:执行sql指向的SQL语句,若结果集不为空,函数就会调用函数指针callback所指向的函数

参数:

  • @db:数据库的标识
  • @sql:SQL语句(一条或多条),以;结尾
  • @callback:是回调函数,当select这条语句执行后,sqlite3会去调用你提供的函数
  • @arg:当执行sqlite3_exec的时候传递给回调函数的参数
  • @errmasg:记录sqlite3_exec的错误信息

返回值:成功 SQLITE_OK 失败 非SQLITE_OK

回调函数指针 --> typedef int callback(void*para,int n,char ** pvalue,char **pname)

功能:此函数由用户定义,当sqlite3_exec 函数执行时sql语句后,结果集不为空时,sqlite3_exec函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数

参数:

  • @pare:sqlite3_exec传给此函数的参数,para为任意数据类型的地址
  • @n:结果集的列数
  • @pvalue:指针数组的地址,其存放一行信息中各个列值的首地址
  • @pname:指针数组的地址,其存放一行信息中各个列值对应列名的首地址

返回值:若为非0值,则通知sqlite3_exec终止回调

sqlite3_get_table --> int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resulttp,int *nrow,int *ncolumn,char **errmsg)

功能:执行sql指向SQL语句,函数将结果集相关的数据的地址保存在函数的参数中

参数:

  • @db:数据库的标识
  • @sql:SQL语句(一条或多条),以;结尾
  • @resultp:指针数组的地址,其记录了结果集的数据
  • @r:结果集的行数(不包括列名)
  • @c:结果集的列数
  • @errmsg:错误信息

sqlite3_free_table --> void sqlite3_free_table(char**resultp);

功能:释放sqlite3_get_table分配的内存

参数:结果集的数据的首地址

相关推荐
我不是程序员三三4 分钟前
怎么监控电脑?企业办公终端监控建设实战与合规要点
服务器·数据库·电脑
这个DBA有点耶5 分钟前
时间序列数据库选型2026:5款主流产品深度对比与场景适配
大数据·数据库·程序人生·架构·时序数据库·dba·数据库管理员
砚底藏山河10 分钟前
拉数管道设计:从一次性脚本到可重启的数据流水线(魔码量化实战 #01)
java·数据库·python·金融·maven
2601_9663771322 分钟前
运营商密评密改落地实践:透明加密解决密码应用合规与安全痛点
数据库·安全·oracle
伯恩bourne27 分钟前
Qdrant 快速入门 :数据模型介绍
服务器·数据库·人工智能
AgentMaster42 分钟前
元数据、血缘、质量、安全四大模块能力拆解,数据治理方案对比:4 种技术路线深度评测
大数据·数据库·数据仓库·人工智能·原型模式
tryxr1 小时前
Redis 的背景知识
数据库·redis·缓存
IvorySQL1 小时前
PostgreSQL 日报 |SUM-AVG 溢出检测不足(9 月 5 日)
数据库·postgresql·区块链
2601_962099081 小时前
python flask sqlalchemy连接数据库流程介绍
数据库·python·flask·教程·sqlalchemy
TDengine (老段)1 小时前
TDgpt 概览 — AI 增强的时序数据库
大数据·数据库·人工智能·物联网·时序数据库·iot·tdengine