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

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.xdnf.cn/news/15198.html

相关文章:

  • 【PTA数据结构 | C语言版】后缀表达式求值
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • Edge浏览器:报告不安全的站点的解决方案
  • JAVA线程池详解+学习笔记
  • 鸿蒙NDK开发技巧之-----HAP包如何引入HSP包后,如何给HSP的包传递上下文
  • 非欧几里得空间图卷积算子设计:突破几何限制的图神经网络新范式
  • 从LLM到VLM:视觉语言模型的核心技术与Python实现
  • 如何搭建一个高质量的开放接口平台
  • 顺序队列和链式队列
  • HTML(上)
  • 混合精度训练:梯度缩放动态调整的艺术与科学
  • day4--上传图片、视频
  • AI软件出海SEO教程
  • 从 Spring 源码到项目实战:设计模式落地经验与最佳实践
  • nginx反向代理实现跨域请求
  • 基于springboot+Vue的二手物品交易的设计与实现
  • ABP VNext + OpenTelemetry + Jaeger:分布式追踪与调用链可视化
  • C语言32个关键字
  • WebGL简易教程——结语
  • 可穿戴智能硬件在国家安全领域的应用
  • Openpyxl:Python操作Excel的利器
  • 10. 垃圾回收的算法
  • JVM 中“对象存活判定方法”全面解析
  • java单例设计模式
  • 小白入门:通过手搓神经网络理解深度学习
  • 6. JVM直接内存
  • 机器学习(ML)、深度学习(DL)、强化学习(RL)关系和区别
  • Linux之如何用contOs 7 发送邮件
  • LeetCode 3169.无需开会的工作日:排序+一次遍历——不需要正难则反,因为正着根本不难
  • 【Modern C++ Part9】Prefer-alias-declarations-to-typedefs