【SQL】【事务】

注入SQL语句,让数据库执行

int mysql_queery(MYSQL* mysql , const char * query)

mysql:已经连接的MYSQL对象指针

query:要执行的SQL语句字符串

返回值 非0失败 成功0

关闭连接的数据库

void mysql_close()

mysql_store_result() //用于查询结果集的函数,主要处理select,show等返回结果集的SQL语句

内部流程: 将完整的结果集从服务器端读取搭配客户端,并存储在本地中

MYSQL_RES* mysql_store_result(MYSQL* mysql)

返回值:成功返回一个MYSQL_RES*的结果集指针,用于后续的读操作

失败返回NULL(查询无结果,内存不足)

使用场景:

1.需要随机访问结果集:由于结果集已经全部加载到本地内存,可以自由移动游标

(可通过mysql_data_seek()定位到具体行)

2.适用结果集较小,适合数据量不大的查询,避免服务器端长时间保持结果集

3.需要多次遍历结果集:因为将结果集已经加载到本地,所以可以反复读取,无需重新查询

mysql_num_row()用于获取 结果集 中的数的函数

my_ulonglong mysql_num_rows(MYSQL_RES* result)

参数:结果集指针

返回值:返回结果集中的行数(无符号长整形)

mysql_field_count()用于获取结果集 字段()数量的函数

unsigned int mysql_field_count(MYSQL_RES* mysql)

参数:数据库连接对象指针

返回值:返回最近一次查询的结果集字段(如果查询并无返回字段,返回0)

mysql_fetch_row()

从结果集中读取一行数据,每调用一次自动移动到下一行继续读取,直到结果集末尾返回NULL

MYSQL_ROW* mysql_fetch_row(MYSQL_RES *result)

参数:获取的结果集指针

返回值:MYSQL_ROW指针,本质上是一个字符串数组(char **)

失败返回NULL

数据库中的"事务",不可分割的操作集合,这些操作要么全部执行,要么失败全回滚

事务必须满足四大核心特点,简称ACID

1.原子性(A)

事务是一个"原子"操作单元,要么全执行,要么在某个步骤失败后,所有已经执行的操作全部被撤销(回滚),数据回到事务最开始的状态。

例子:扣款和收款同时成功时,才能执行完毕,否则有一方失败,操作回滚

2.一致性(C)

事务执行前后,数据库从一个"一致状态"切换为另一个"一致状态",即满足数据预设的约束

例子;转账前后,两个账户的总金额不变

3.隔离性(I)

多个事务同时执行时,彼此的操作互不干扰,每个事物都感受不到其他事物的存在。

数据库通过调整隔离级别来控制并发事务的交互程度(避免脏读,不可重复读,幻读)

4.持久性(D)

事务一旦提交,其对数据库的修改永久保存到数据库中,即使发生系统崩溃,数据也不会丢失

相关推荐
欢呼的太阳2 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
喜欢的名字被抢了4 小时前
MySQL基础入门:从零理解数据库与SQL
数据库·mysql·教程
Elastic 中国社区官方博客5 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
DLYSB_5 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
儒雅的大叔5 小时前
MySQL数据库InnoDB数据恢复工具使用总结
数据库·mysql·adb
观远数据5 小时前
ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产
数据库·人工智能·sql
嘉&年华6 小时前
【第008篇】通过dexp和dimp命令导出和导入dmp文件(适用于达梦数据库)
数据库·sql
哥是强混7 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
网络·数据库·.net
ffqws_7 小时前
redis面试:如何保证双写一致
数据库·redis·缓存
水无痕simon7 小时前
6 数据库同义词
数据库