项目:点餐系统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

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

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

相关文章

SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

在上一篇文章,讲了服务的注册和发现。在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbonrestTemplate,另一种是feign。在这一篇文章…

浅谈卫星通信技术

目录 1.卫星的概念 2.卫星的具体作用 3.利用卫星进行通信的优势 4.卫星通信带来的技术变革 1.卫星的概念 卫星是指在地球轨道上运行的天体或人造物体。一般来说,我们所说的卫星主要指人造卫星,它是由人类设计、制造并送入轨道的人造宇宙飞行器。 人造…

mybatis:动态sql【2】+转义符+缓存

目录 一、动态sql 1.set、if 2.foreach 二、转义符 三、缓存cache 1. 一级缓存 2. 二级缓存 一、动态sql 1.set、if 在update语句中使用set标签&#xff0c;动态更新set后的sql语句&#xff0c;&#xff0c;if作为判断条件。 <update id"updateStuent" pa…

如何理解IaaS、PaaS、SaaS?盘点受欢迎的八大SaaS平台!

如何理解IaaS、PaaS、SaaS&#xff1f;他们各自的优势在哪里&#xff1f;我们又应该如何选择&#xff1f;本篇将带大家深入浅出的了解IaaS、PaaS、SaaS&#xff0c;并为大家盘点2023最受欢迎的SaaS平台。 通过本文你将了解&#xff1a; IaaS、PaaS、SaaS分别是什么我们该如何理…

省级智慧农业大数据平台项目规划建设方案[195页Word]

导读&#xff1a;原文《省级智慧农业大数据平台项目规划建设方案[195页Word]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 1 农业大数据平台项目概述 1.1 建设…

每日两题 111二叉树的最小深度 112路径总和(递归)

111 题目 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2示例 2&#x…

Java 程序打印 OpenCV 的版本

我们可以使用 Java 程序来使用 OpenCV。 OpenCV 的使用需要动态库的加载才可以。 加载动态库 到 OpenCV 的官方网站上下载最新的发布版本。 Windows 下载的是一个可执行文件&#xff0c;没关系&#xff0c;这个可执行文件是一个自解压程序。 当你运行以后会提示你进行解压。…

WordPress导航主题源码

源码说明&#xff1a; V2.0406 添加搜索自动索引百度热搜关键词 添加首页tab标签模式加载方式切换(ajax加载和普通加载)(首页设置) 修复tab标签ajax加载模式会显示未审核的网址的bug 小屏幕热搜采用水平滚动 优化子主题支持 添加文章分页 添加解决WordPress 429的服务(…

Gorilla LLM:连接海量 API 的大型语言模型

如果你对这篇文章感兴趣&#xff0c;而且你想要了解更多关于AI领域的实战技巧&#xff0c;可以关注「技术狂潮AI」公众号。在这里&#xff0c;你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、前言 在当今这个数字化时代&#xff0c;大型语言模型&#xff08;LLM…

Element table根据字段合并表格(可多字段合并),附带拖拽列动态合并

效果如图&#xff0c;姓名 数值1 字段进行自动合并 封装合并列js - tableMerge.js // 获取列合并的行数 // params // tableData: 表格数据 // mergeId: 合并的列的字段名 export const tagRowSpan (tableData, mergeId) >{const tagArr [];let pos 0;tableData.map((i…

C语言_分支和循环语句(2)

文章目录 前言一、for 循环1.1语法1.2 for 语句的循环控制变量1.3 一些 for 循环的变种 二、do ... while()循环2.1 do 语句的语法2.2 do ... while 循环中的 break 和 continue2.3 练习1 **- 计算n的阶乘**2. - **在一个有序数组中查找具体的某个数字 n** 二分查找算法&#x…

C++------map和set的使用

文章目录 关联式容器键值对树型结构的关联式容器set的介绍map的介绍 关联式容器 什么是关联式容器&#xff1f;它与序列式容器有什么区别&#xff1f; 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<key&#xff0c;value>结…