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)