当前位置: 首页 > 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.dtcms.com/a/275880.html

相关文章:

  • MCU芯片的功能安全机制E2E的基本原理和应用实现
  • 解锁C++数据结构:开启高效编程之旅
  • IDEA+Eclipse+Lombok无效问题排查
  • Java 之字符串 --- String 类
  • 电脑上如何查看WiFi密码
  • 什么是Jaccard 相似度(Jaccard Similarity)
  • 蓝牙调试抓包工具--nRF Connect移动端 使用详细总结
  • 日志不再孤立!用 Jaeger + TraceId 实现链路级定位
  • 程序在计算机中如何运行?——写给编程初学者的指南
  • 12.使用VGG网络进行Fashion-Mnist分类
  • Jenkins+Gitee+Docker容器化部署
  • 三步定位 Git Push 403:从日志到解决
  • 【深度剖析】致力“四个最”的君乐宝数字化转型(下篇:转型成效5-打造数字化生存能力探索可持续发展路径)
  • 【Datawhale AI夏令营】mcp-server
  • LeetCode 每日一题 2025/7/7-2025/7/13
  • 1. 好的设计原则
  • XCTF-Mary_Morton双漏洞交响曲:格式化字符串漏洞泄露Canary与栈溢出劫持的完美配合
  • 【2024CSP-J初赛】阅读程序(2)试题详解
  • 剑指offer57_和为S的两个数字
  • 深入详解:决策树在医学影像脑部疾病诊断中的应用与实现
  • Java 属性配置文件读取方法详解
  • 《Java HashMap底层原理全解析(源码+性能+面试)》
  • LangChain 的链(Chain)
  • Java 接口与抽象类:深入解析两者的区别及应用场景
  • 【深度学习】常见评估指标Params、FLOPs、MACs
  • 牛客:HJ19 简单错误记录[华为机考][字符串]
  • 多表查询-4-外连接
  • EMC接地
  • 试用了10款翻译软件后,我只推荐这一款!完全免费还超好用
  • 6.isaac sim4.2 教程-Core API-多机器人,多任务