项目:点餐系统3mysql知识回顾&MySQL客户端

连接数据库

mysql -uroot -p

密码:空

一、第三方库:MySQL

数据库-存储并管理数据的仓库,是一个C/S架构

MySQL客户端通过sql来告诉MySQL服务器,自己需要做什么操作

1.sql语句

sql:structure query language结构化查询语言

sql语句应该以英文封号作为结尾

sql语句不区分大小写

sql语句尽量避免使用关键字作为库或者表或者字段的名称

1.1库的操作

创建:create database ct;

查看所有库:show databases;

选择操作的库:use ct;

查看当前所选操作的库:select database();

删除库:delete database ct;

1.2MySQL中的数据类型

int整型

decimal(M,D)浮点型

varchar(len)字符串类型

datatime日期类型

1.3表的操作

创建:create table student(sn int , name varcher(32) , age int );

查看库中所有表:show tables;

查看表结构:desc student;

删除表:drop table student;

1.4表中数据的操作

新增:

insert student values(1,"张三",18);

数据位置一定跟表中字段一致,不能错位或缺少

查询:

全字段查询:select * from student;

指定字段查询:select sn , name from student;

条件查询:select *from student where name = "张三";

修改:

注意:修改的时候一定要设置过滤条件,否则针对的是表中的所有元素

update student set name = "李四" where name = "张三";

删除:

delete from student where name = "张三";

二、MySQL客户端

主要了解的是MySQL开发包中的api接口

1.初始化MySQL操作句柄

MYSQL *mysql_init(MYSQL *mysql);

对传入的句柄进行初始化

若传入的句柄为NULL,则内部会动态申请空间,进行初始化,并返回句柄首地址

返回值:若失败则返回NULL

2.连接MySQL服务器

MYSQL *mysql_real_connect(MYSQL *mysql, char *host , char *user , char *pass , char *dbname, int port , char *unix_socket , int client_flag)

mysql:初始化完成的mysql句柄

host:用户名

pass:密码

dbname:要操作的库名称

port:端口,默认0为3306端口,是mysql服务的端口

unix_socket:套接字或管道文件名-通常置NULL

client_flag:客户端的操作标志,通常置0

返回值:成功返回句柄首地址,失败返回NULL

3.设置客户端字符集(通常与服务器保持一致,使用utf8)

int mysql_set_character_set(MYSQL *mysql , char * name);

mysql:操作句柄

name:字符集名称,通常是"utf8"

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

4.选择要操作的数据库(切换操作的库)

int mysql_select_db(MYSQL *mysql , char * dbname);

5.将sql语句发送给服务器,并执行sql语句

int mysql_query(MYSQL *mysql , char * sql);

mysql:操作句柄

sql:对数据库中的数据进行的操作的sql语句

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

语句有没有执行成功,决定了当前的操作是否完成

6.查找操作

因为增删改只要语句执行成功就OK,但是如果是查询语句,因为查询的话语成功执行,还需要获取查询的结果。

6.1将查询的结果保存到本地

MYSQL_RES *mysql_store_result(MYSQL * mysql);

mysql:操作句柄

返回值:成功返回结果集的首地址;失败返回NULL

将结果集保存到本地与执行语句这一步操作,如果使用的是一个操作句柄就会发生线程安全问题

6.2获取结果集的行数和列数

int mysql_num_rows(MYSQL_RES *res);//获取结果行数

int mysql_num_fields(MYSQL_RES *res);//获取结果列数

6.3遍历结果集,逐条取出数据

MYSQL_ROW mysql_fetch_row(MYSQL_RES *res);

这个函数或者说res内部记录了当前的读写位置,只需要不断的调用,就可以逐条取出数据。

这个返回值是给字符指针数组char *arr\[\] ,将一行中的多列进行扁平化存储,每一个元素都是一列数据。

6.4释放结果集

int mysql_free_result(MYSQL_RES *res);

7.关闭客户端连接,释放句柄

int mysql_close(MYSQL *mysql);2

相关推荐
fengkai45454 分钟前
八、Docker详解1-3
运维·docker·容器
智购无人售货机厂家18 分钟前
2026自动售货机品类拓展逻辑:从饮料零食到鲜食药品文创的工程实践~YH
服务器·人工智能·单片机·线性代数·矩阵
流浪00140 分钟前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号
国际云,接待44 分钟前
华为云 ECS 怎么选规格:从用户地域、CPU/内存比、PPS 和云硬盘性能做购买前容量判断
服务器
国际云,接待1 小时前
华为云 CBR 备份不是点一下就完事:用恢复演练验证 ECS 的 RPO、RTO 和跨区域容灾
服务器
学烹饪的小胡桃1 小时前
资产设备管理系统 WGFIX 怎么设置https访问
linux·运维·服务器·网络·安全
张宇Joaquin1 小时前
XX业务反序列化数据报错问题定位报告
服务器
明月_清风1 小时前
MHS:AI Agent 开始连接物理世界
人工智能·后端·网络协议
IT摆渡者1 小时前
rocky Linux 根目录下扩展新硬盘空间
服务器
志栋智能2 小时前
超自动化巡检如何生成“有灵魂”的运维报告?
大数据·运维·人工智能·架构·自动化