当前位置: 首页 > news >正文

Linux驱动08 --- 数据库

目录

一、数据库

1.1 数据库介绍

1.2 安装数据库相关的插件

1.3 数据库的使用

        连接 mysql 数据库         

        设置登录密码

                alter user 'root'@'localhost' identified by '1';

        数据库中指令的格式

        退出数据库

        登录数据库的指令 --- 重要

        显示所有数据库

        创建数据库

        使用数据库

        查看数据库中的表

        创建数据表

        查看表的信息

        查看表中的内容

        给表中插入内容

        条件操作

        修改表中的数据

        删除表中一行数据

        修改表的信息

1.4 数据库相关 API

        获取数据库的操作指针

        连接数据库

        关闭数据库

        执行数据库指令

        获取执行指令后的结果集

        获取结果集中的行数

        获取结果集中的列数

        获取结果集中一行的内容

        清除结果集


一、数据库

1.1 数据库介绍

        当前对于客户端的信息,存放在服务器的数组中 --- 缺点就是,掉电丢失数据库就像 C 语言的文件系统,提供了一个掉电不丢失的方案,和文件系统的区别 --- 数据库要更加的快,

        使用 mysql 数据库 --- 免费,数据库就是数据仓库,数据的存放按照一定的规格的 --- 查找会更快,使用者可以根据相关的关键字快速准确的获取到信息,非常类似 Excel 表格 --- 可以通过公式查找

        MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

        MySQL 是一种关系型数据库管理系统,关系数据库将数据保存在不同的表,中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

        mysql 兼容多个平台 --- Linux 和 Windows 和 IOS,主要在 Linux 平台,并且使用没有界面

        对于 mysql                                  可以把它看作         电脑

        mysql 中有不同的数据库            可以把它看作         电脑中的文件夹

        每个数据库中又有不同的数据表 可以把它看作        文件夹中的 Excel 表格

        数据表中存放数据                       可以把它看作        Excel 表中的数据

        对于数据的操作                                                        增删改查

1.2 安装数据库相关的插件

        更换软件来源

        保证网络连接         ping www.baidu.com -c 5

        更新软件源            sudp apt update

        安装数据库            sudo apt install mysql-server mysql-client libmysqlclient-dev

1.3 数据库的使用

        需要以管理员权限去运行数据库

        连接 mysql 数据库         

                sudo mysql -u root

        设置登录密码

                alter user 'root'@'localhost' identified by '1';

        数据库中指令的格式

        指令的关键字

                alter --- 修改         show --- 显示         create --- 创建         drop --- 删除

                delete --- 删除         updata --- 更新         select --- 罗列表中信息

        其它关键字

                database --- 数据库         table --- 表         column --- 列

                insert --- 插入         set、value、where 等

        指令 操作对象 相关操作        ;         --- 指令以分号结尾

        退出数据库

                exit、quit、\q

        登录数据库的指令 --- 重要

                sudo mysql -u root -p

        显示所有数据库

                show databases;

        

                当出现这个 -> 的时候,说明数据库终端认为指令没有输入完

        创建数据库

                create database <dataname>;

                        例如:create database Mysqldata;

        使用数据库

                use <dataname>;

                        例如:use Mysqldata;

        查看数据库中的表

                show tables;

        创建数据表

                create table <tablename>(列名 1 数据类型 1,列名 2 数据类型 2,…);

                数据类型

                        int --- 4 字节的整型        big --- 8 字节的整型         char(长度) --- 字符串

                        char --- 字符        float --- 浮点型         double --- 双精度浮点型

                        例如:create table userinfo(账号 char(16),密码 char(16),昵称 char(16),fd int,type int);

        查看表的信息

                show columns from <tablename>;

                        例如:show columns from userinfo;

        查看表中的内容

                select * from <tablename>;

                        例如:select * from userinfo;

        给表中插入内容

                insert into <tablename> value(列 1 的值,列 2 的值,列 3 的值,……);

                        例如:insert into userinfo value('66666666','8888','贾维斯',0,0);

        条件操作

                where 

                         例如:查找特定条件的人员的所有信息               

                          select * from userinfo where 账号='66666666';

                查找特定条件的人员的特定信息

                        select 密码 from userinfo where 账号='66666666';

                        后续可以用于通过对方的账号找到对方的套接字

        修改表中的数据

                updata <tablename> set <listname>=<newvalue> where …

                例如:update userinfo set fd=7 where 账号='66666666';

                不加条件就作用于所有对象

                        update userinfo set type=7;

        删除表中一行数据

                delete from <tablename> where ……;

                例如:delete from userinfo where 账号='66666666';

        修改表的信息

                增加列

                alter table <tablename> add <新的列名> <新增列的类型>;

                例如:alter table userinfo add 性别 char;

                删除列

                alter table <tablename> drop <列名>;

                例如:alter table userinfo drop type;

                改变列类型

                alter table <tablename> modify <列名> <新的类型>;

                例如:alter table userinfo modify fd bigint;

                修改列名称

                alter table <tablename> change column <oldlist> <newlist> <newlisttype>;

                例如:alter table userinfo change column fd 套接字 bigint;

                给表更名

                alter table <tablename> rename <newtablename>;

                例如:alter table userinfo rename user;

                删除表

                drop table <tablename>;

                例如:drop table user;

                删除数据库

                drop database <dbname>;

                例如:drop database Mysqldata;

以上是操作数据库的基础常用指令,而作为一个开发者,最核心的是在程序中操作数据库 --- 必然要用到相关的 API 接口

1.4 数据库相关 API

        头文件

                #include <mysql/mysql.h>

        获取数据库的操作指针

        函数原型

                MYSQL *mysql_init(MYSQL *mysql)

        函数参数

                要初始化的数据库指针,取地址传入

        函数返回值

                初始化后的指针

        也就是说,可以先定义一个 MYSQL 变量,取地址传入函数参数,也可以直接定一个 MYSQL 指针,然后承接函数返回值

        连接数据库

        函数原型

                MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long clientflag)

        函数参数

                mysql:mysql_init 的返回值

                host:连接的数据主机 ,在本地 --- localhost

                user:数据库用户名,填 root

                passwd:用户密码,填 1

                db:连接数据库的名字 --- Mysqldata

                port:没有端口号,填 0

                unix_socket:没有,填 NULL

                clientflag:直接给 0

        函数返回值

                成功返回连接后的数据库的指针,失败返回 NULL

        关闭数据库

        函数原型

                void mysql_close(MYSQL *sock)

        函数参数

                数据库的核心指针

        注意:连接数据库,如果出现有时候可以连接成功,有时候失败,那么就使用理员权限运行可执行程序

        执行数据库指令

        函数原型

                int mysql_query(MYSQL *mysql, const char *q)

        函数参数

                mysql:连接成功的数据库指针

                q:执行的数据库指令

        函数返回值

                成功返回 0,失败返回负数

        获取执行指令后的结果集

        函数原型        

                MYSQL_RES *mysql_store_result(MYSQL *mysql)

        函数参数

                mysql:连接成功的数据库指针

        函数返回值

                成功返回结果集,失败返回 NULL

                结果集中的内容通过函数解析

        获取结果集中的行数

        函数原型

                my_ulonglong mysql_num_rows(MYSQL_RES *result)

        函数参数

                mysql_store_result 的返回值

        函数返回值

                结果集中的行数

        获取结果集中的列数

        函数原型

                unsigned int mysql_num_fields(MYSQL_RES* res)

        函数参数

                mysql_store_result 的返回值

        函数返回值

                结果集中的列数

        获取结果集中一行的内容

        函数原型

                MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

        函数参数

                mysql_store_result 的返回值

        函数返回值

                是一个二级指针 --- 对应的就是二维数组

                一个一行 N 列的字符串数组

                        每个元素都是一个字符串

                失败或者读到结尾,就返回 NULL

        清除结果集

        函数原型

                void mysql_free_result(MYSQL_RES *result)

http://www.lryc.cn/news/586231.html

相关文章:

  • C++ Map 和 Set 详解:从原理到实战应用
  • 【Spring AOP】什么是AOP?切点、连接点、通知和切面
  • Python 实战:构建 Git 自动化助手
  • RabbitMQ面试精讲 Day 1:RabbitMQ核心概念与架构设计
  • 网络安全初级第一次作业
  • 医疗AI前端开发中的常见问题分析和解决方法
  • Filament引擎(三) ——引擎渲染流程
  • 【GESP】C++ 2025年6月一级考试-客观题真题解析
  • Apache Iceberg数据湖高级特性及性能调优
  • PyTorch神经网络实战:从零构建图像分类模型
  • 【文献阅读】DEPTH PRO: SHARP MONOCULAR METRIC DEPTH IN LESS THAN A SECOND
  • Rust Web 全栈开发(五):使用 sqlx 连接 MySQL 数据库
  • Spring 框架中的设计模式:从实现到思想的深度解析
  • 单链表的题目,咕咕咕
  • Rust Web 全栈开发(六):在 Web 项目中使用 MySQL 数据库
  • [Python] Flask 多线程绘图时报错“main thread is not in main loop”的解决方案
  • 【字符最长连续数量】2022-8-9
  • wedo稻草人-----第32节(免费分享图纸)
  • windows 改用 nvm
  • hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
  • SpringAI实现聊天记录保存到MySQL
  • 浅谈 Python 中的 yield——yield的返回值与send()的关系
  • Golang 面向对象(封装、继承、多态)
  • 特辑:Ubuntu,前世今生
  • Go内存分配
  • python excel处理
  • 【世纪龙科技】新能源汽车结构原理体感教学软件-比亚迪E5
  • Windows 用户账户控制(UAC)绕过漏洞
  • 单细胞分析教程 | (二)标准化、特征选择、降为、聚类及可视化
  • 力扣-24.两两交换链表中的节点