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分配的内存

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

相关推荐
身如柳絮随风扬2 小时前
MySQL为什么使用B+树?
数据库·b树·mysql
短剑重铸之日2 小时前
《ShardingSphere解读》04 配置驱动:ShardingSphere 中的配置体系是如何设计的?
java·数据库·后端·spring·shardingsphere
胡斌附体2 小时前
MySQL 在 Docker 环境下连接变慢问题记录
数据库·mysql·docker·连接··本机·外部机器连接
·云扬·2 小时前
【MySQL实操】停服务方式新增从库:从架构到落地全指南
数据库·mysql·架构
真智AI2 小时前
FastAPI+SQLite任务API:从零到可测上线
数据库·sqlite·fastapi
6+h2 小时前
【MySQL】分表分库设计详解
数据库·mysql
wmfglpz882 小时前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
fareast_mzh2 小时前
[MySQL] Package ‘libtirpc‘, required by ‘virtual:world‘, not found
数据库·qt·mysql
草莓熊Lotso2 小时前
Linux 进程间通信之命名管道(FIFO):跨进程通信的实用方案
android·java·linux·运维·服务器·数据库·c++