sqlite3数据库操作接口详细整理,以及常用的数据库语句

sqlite3_open()

int sqlite3_open(

const char *filename, /* Database filename (UTF-8) */

sqlite3 **ppDb /* OUT: SQLite db handle */

);

功能:打开一个数据库,如果数据库不存在,则创建一个数据库

参数1:要打开的数据库的名字,是一个字符串

参数2:数据库操作句柄,是一个二级指针,需要我们传入一级指针的地址,如果打开数据库成功,则数据库指针由该参数返回

返回值:成功返回SQLITE_OK,失败返回一个错误码(非linux的错误码),可以使用sqlite_errmsg来获取错误信息,由sqlite3_errcode返回错误码值

 sqlite3_errmsg()

const char *sqlite3_errmsg(sqlite3*);

功能:通过出错的句柄返回错误信息

参数:出错的句柄

返回值:对应的错误信息,是一个字符串

 sqlite3_exec()

int sqlite3_exec(

sqlite3* db, /* An open database */

const char *sql, /* SQL to be evaluated */

int (*callback)(void*,int,char**,char**), /* Callback function */

void *arg, /* 1st argument to callback */

char **errmsg /* Error msg written here */

);

功能:调用该函数,执行sql语句

参数1:已经被打开的数据库句柄

参数2:要执行的sql语句

参数3:回调函数,主要用于数据库查找时,处理查找的结果集的函数,如果不需要处理sql语句的结果,则填NULL即可

参数4:参数3的第一个参数

参数5:错误信息

返回值:成功返回SQLITE_OK,失败返回其他错误码

 sqlite3_get_table()

int sqlite3_get_table(

sqlite3 *db, /* An open database */

const char *zSql, /* SQL to be evaluated */

char ***pazResult, /* Results of the query */

int *pnRow, /* Number of result rows written here */

int *pnColumn, /* Number of result columns written here */

char **pzErrmsg /* Error msg written here */

);

功能:通过执行sql语句,得到结果集中的内容

参数1:数据库

参数2:要执行的sql语句

参数3:查询的结果,需要定义一个二级指针变量,将地址进行传递

参数4: 查询结果的行数

参数5:查询结果的列数

参数6:错误信息

返回值:成功返回SQLITE_OK,失败返回非0的错误码

sqlite3_close()

int sqlite3_close(sqlite3*);

功能:关闭数据库,断开句柄所拥有的资源

参数:数据库指针

返回值:成功返回SQLITE_OK,失败返回其他错误码

 

 sqlite3_free_table()

void sqlite3_free_table(char **result);

功能:释放表的空间

参数:通过sql语句查询的结果

 

sql语句

1)创建表格

create table 表名 (字段名 数据类型, 字段名 数据类型);

create table if not exists 表名 (字段名 数据类型, 字段名 数据类型); ​

eg:

        CREATE TABLE stu (id int, name char, score float);

        CREATE TABLE if not exists stu1 (id int, name char, score float); ​

注意:数据库不支持严格的数据类型检查,数据类型写错了,创建是能够成功的,不会有错误提示;

2)删除表格

drop table 表名; ​

eg:

        drop table stu1;

3)插入记录

字符串类型可以使用单引号,也可以使用双引号 ​

① 全字段插入 insert into 表名 values (数据1, 数据2, 数据3);

eg:

         INSERT INTO stu VALUES (2, 'ls', 99); INSERT INTO stu VALUES (1, "zs", 59);

注意: 1.数据输入的顺序要与创建时候字段的顺序一致;

②部分字段插入 insert into 表名 (字段名1, 字段名2) values (数据1, 数据2);

eg:

         INSERT INTO stu (id, name) values (9, 'ww');

注意: 1.数据的顺序要与指定的字段名1,字段名2对应;

4)查看记录

.header on 打开表头

.mode column 对齐

在终端输入shell指令:sqlitebrowser sq.db 图形化界面 ​

① 查看所有记录 select * from 表名;

eg:

        SELECT * FROM stu;

② 查看某几行 select * from 表名 where 限制条件;

逻辑与 and 逻辑或 or

eg:

        SELECT * FROM stu WHERE id<3 AND score>90;

        SELECT * FROM stu WHERE id<2 OR id>3;

③ 查看某几列

select 字段1, 字段2 from 表名;

select 字段1, 字段2 from 表名 where 限制条件;

eg:

        SELECT id, name FROM stu;

        SELECT id, name FROM stu WHERE score>90;

5)修改记录

update 表名 set 字段=数值 where 限制条件; ​

eg:

        UPDATE stu SET score=60 WHERE id=1;

注意:该语句中的where表明去修改指定的记录,如果没有加where,则表明将所有记录的该值都更新

6)删除记录

delete from 表名 where 限制条件; ​

eg:

        delete from stu where id=1;

        delete from stu; 删除表格中的所有数据;

7)主键(primary key)

primary key 主键;

create table 表名(字段名 数据类型 primary key, 字段名 数据类型);

primary key主键:唯一标识表格中的每一条记录;

        例如:id字段为主键,当表格中有id==1的记录时,不允许再插入id为1的记录了;

eg:

        create table stu (id int primary key, name char, score float); ​

注意:主键的值必须唯一。每一张表格都应该设置一个主键,而且只能设置一个。

8)拷贝

从a中拷贝所有数据到b中:

        create table b as select * from a;

从a中拷贝指定字段到b中:

        create table b as select 字段,字段,字段 from a; ​

CREATE TABLE stu1 AS SELECT * FROM stu;

CREATE TABLE stu2 AS SELECT id, name, score FROM stu;

9)增加列

alter table 表名 add column 字段名 数据类型;

alter table stu add column score int;

10)修改表名

alter table 旧表名 rename to 新表名;

alter table stu rename to stuinfo;

11)修改字段名(列名)

不支持直接修改列名

1.将表重新命名(a改成b)

        alter table stuinfo rename to stu;

2.新建修改名字后的表(新建一个a)

        create table stuinfo (name char, age1 int, sex char, score int);

3.从旧表b中取出数据,插入到新表a中;

        insert into stuinfo select * from stu;

12)删除列

不支持直接删除列;

1.创建一个新表b,并复制旧表a需要保留的字段信息;

        create table stu as select name, age1, sex from stuinfo;

2.删除旧表a;

        drop table stuinfo;

3.修改新表b的名字a;

        alter table stu rename to stuinfo;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/675352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言每日一题——链表篇(七)

传送门 牛客面试笔试必刷101题 ----------------删除链表的倒数第n个节点 题目以及解析 题目 解题代码及解析 解析 这一道题与昨天的题目在解题思路上有一定的相似之处&#xff0c;都是基于双指针定义快慢指针&#xff0c;这里我们让快指针先走n步&#xff0c;又因为n一定…

吉他学习:右手拨弦方法,右手拨弦训练 左手按弦方法

第六课 右手拨弦方法https://m.lizhiweike.com/lecture2/29362775 第七课 右手拨弦训练https://m.lizhiweike.com/lecture2/29362708

Matplotlib 中文柱状图绘制详解

在数据可视化的过程中,Matplotlib是Python中最受欢迎的绘图库之一。然而,当涉及到中文字符的显示时,可能会遇到一些挑战。在这篇博客中,我们将详细讨论如何使用Matplotlib绘制中文柱状图。 1. 设置中文显示 首先,为了确保中文字符的正确显示,我们需要设置Matplotlib的字…

vue.js基于springboot的实验室设备管理系统10345

(1)设备信息模块&#xff1a;记录设备的基本信息&#xff0c;如设备采购来源信息、设备需求量、当前数量、日期等。 (2) 用户模块&#xff1a;教师职工。实现对用户个人信息、消息管理和实验室设备的查询使用申请等。 (3) 管理员模块&#xff1a;实现对所有设备信息的增删改查&…

关于LLaMA Tokenizer的一些坑...

使用LLaMA Tokenizer对 jsonl 文件进行分词&#xff0c;并将分词结果保存到 txt 文件中&#xff0c;分词代码如下&#xff1a; import jsonlines import sentencepiece as spm from tqdm import tqdmjsonl_file /path/to/jsonl_file txt_file /path/to/txt_filetokenizer s…

腾讯云游戏服务器购买入口,详细配置精准报价

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

BUUCTF-Real-[Tomcat]CVE-2017-12615

目录 漏洞描述 一、漏洞编号&#xff1a;CVE-2017-12615 二、漏洞复现 get flag 漏洞描述 CVE-2017-12615&#xff1a;远程代码执行漏洞 影响范围&#xff1a;Apache Tomcat 7.0.0 - 7.0.79 (windows环境) 当 Tomcat 运行在 Windows 操作系统时&#xff0c;且启用了 HTTP P…

MVC模式Nodejs+express+Mysql开发后台

想给自己的博客做个后台&#xff0c;一开始考虑的是java开发&#xff0c;然后把idea和一堆东西勤勤恳恳安装完了之后&#xff0c;心里一想&#xff0c;算了&#xff0c;咱就nodejs不方便多了&#xff0c;于是开始Nodejs开发后台。 Java和idea环境安装 安装jdk(1.8)安装idea&…

Qlik Sense : where exists

什么是Exists函数 Exists() 用于确定是否已经将特定字段值加载到数据加载脚本中的字段。此函数用于返回 TRUE 或 FALSE&#xff0c;这样它可以用于 LOAD 语句或 IF 语句中的 where 子句。 信息注释您也可使用 Not Exists() 来确定是否尚未加载字段值&#xff0c;但是如果要在…

Excel+VBA处理高斯光束

文章目录 1 图片导入与裁剪2 获取图片数据3 数据拟合 1 图片导入与裁剪 插入图片没什么好说的&#xff0c;新建Excel&#xff0c;【插入】->【图片】。 由于图像比较大&#xff0c;所以要对数据进行截取&#xff0c;选中图片之后&#xff0c;点击选项卡右端的【图片格式】…

【JavaWeb】头条新闻项目实现 基本增删改查 分页查询 登录注册校验 业务功能实现 第二期

文章目录 一、为什么使用token口令二、登录注册功能2.1 登录表单提交后端代码&#xff1a; 2.2 根据token获取完整用户信息代码实现&#xff1a; 2.3 注册时用户名占用校验代码实现&#xff1a; 2.4 注册表单提交代码实现&#xff1a; 三、头条首页功能3.1 查询所有头条分类3.2…

打卡今天学习 Linux

过年了&#xff0c;祝大家过年快乐 在今天的学习中&#xff0c;我们涉及了一些关键的 Linux 系统管理知识点&#xff0c;包括 systemctl、IP 地址配置、域名解析、映射的创建、软链接等。让我们简要回顾一下这些主题。 1. systemctl systemctl 是一个强大的 Linux 系统管理工…

docker自定义镜像并使用

写在前面 本文看下如何自定义镜像。 ik包从这里 下载。 1&#xff1a;自定义带有ik的es镜像 先看下目录结构&#xff1a; /opt/program/mychinese [rootlocalhost mychinese]# ll total 16 -rw-r--r-- 1 root root 1153 Feb 5 04:18 docker-compose.yaml -rw-rw-r-- 1 el…

利巴韦林市场规模及厂商格局分析

利巴韦林又名病毒唑&#xff0c;是一种合成鸟苷类似物&#xff0c;对多种DNA和RNA病毒具有广谱活性&#xff0c;可干扰病毒mRNA的合成。利巴韦林1970年由ICN制药公司发现&#xff0c;1986年被批准临床应用&#xff0c;通常与干扰素药物&#xff08;如聚乙二醇干扰素α-2a或聚乙…

开源大型语言模型概览:多语种支持与中文专注

开源大型语言模型概览&#xff1a;多语种支持与中文专注 开源大型语言模型概览&#xff1a;多语种支持与中文专注什么是大型语言模型如何工作大型语言模型的发展应用领域 开源大语言模型概览支持多种语言的开源LLMsLLaMA&#xff08;由Meta开发&#xff09;BERT&#xff08;由G…

什么是Java中的类加载器(ClassLoader),并举例说明不同类型的类加载器?

什么是Java中的类加载器&#xff08;ClassLoader&#xff09;&#xff0c;并举例说明不同类型的类加载器&#xff1f; 在Java中&#xff0c;类加载器&#xff08;ClassLoader&#xff09;是负责加载 Java 类文件的重要组件之一。ClassLoader 将字节码数据加载到 JVM 中&#x…

vue-cil的watch函数详解

在Vue中&#xff0c;watch是一个非常有用的API&#xff0c;用于侦听一个响应式引用&#xff08;例如由ref创建&#xff09;或响应式对象&#xff08;由reactive创建&#xff09;的属性&#xff0c;并在值变化时执行回调函数。Vue 3的Composition API引入了这种侦听方式&#xf…

Vue 3 + Koa2 + MySQL 开发和上线部署个人网站

Vue 3 Koa2 MySQL 开发和上线部署个人网站 记录个人的一个操作步骤, 顺序不分先后, 嫌啰嗦请出门右转! 环境说明: 服务器: 阿里云轻量应用服务器 服务器系统: CentOS8.2 本地环境: macOS 12.7.2 Node: 20.10.0 MySQL: 8.0.26 Vue: 3.3.11 Koa: 2.7.0 pm2: 5.3.1 Nginx: 1.1…

CTFshow web(php命令执行 45-49)

基础知识&#xff1a; 1.绕过cat使用&#xff1a; tac more less head tac tail nl od(二进制查看) vi vim sort uniq rev 2.绕过空格用&#xff1a; %09 <> ${IFS} $IFS$ {cat,fl*} %20 注&#xff1a; %09 ##&#xff08;Tab&#xff09; %20 ##&#xff08;spa…

请手写几种js排序算法

什么是排序算法 冒泡排序选择排序插入排序快速排序归并排序&#xff08;Merge Sort&#xff09; 思想实现测试分析动画 快速排序 &#xff08;Quick Sort&#xff09; 思想实现测试分析动画 思考&#xff1a;快排和归并用的都是分治思想&#xff0c;递推公式和递归代码也非常相…