LINUX中MYSQL的使用

LINUX中MYSQL的使用

MYSQL的数据类型

bool: 布尔类型 0 或者 1

CHAR: 单字符的字符

CHAR(n):多字节字符

VARCHAR(n):可变长度的字符型

TINYINT : 单字节整型

SMALLINT: 双字节整型

MEDIUMINT: 三字节整型

INT: 四字节整型

BIGINT: 八字节整型

FLOAT: 浮点型

DOUBLE: 双精度浮点型

DATE: 日期类型

​ 2025-06-17

​ yyyy-mm-dd

时间类型

​ 10:19:20

​ HH:MM:SS

日期时间类型

​ 2025-06-17 10:19:20

​ yyyy-mm-dd HH:MM:SS

mysql 的常用词汇

database 数据库

table 表

row 行

column 列

from 来自于

select 选择

show 显示

insert 插入

delete 删除

drop 删除

where 条件

change 更改

update 更新

mysql 的显示

进入数据库

复制代码
mysql -u root -p

显示数据库

复制代码
show databases;

切换数据库

复制代码
use + 数据库的名字;

显示表

复制代码
show tables from sys;
show tables from 数据的名字;

显示列

复制代码
show colums from x$waits_global_by_latency;
show columns from +表的名字;

mysql 的查找(重要)

查找表里的所有的数据

复制代码
select * from x$waits_global_by_latency;
select * from 表的名字

查找部分列的信息

复制代码
select events,total from x$waits_global_by_latency;
select 列名 1,列名 2 from 表名;

按照条件查找

复制代码
select * from x$waits_global_by_latency where total=50;
select * from 表名 where 条件;

mysql 表的插入和创建()

数据库的创建

复制代码
create database mypet;
create database 数据库的名字;

表的创建

复制代码
create table mytest (name varchar(10),colour varchar(2),birth date);
create table 表名(第一列的名字 第一列的类型,第二列名 第二列的类型 ..)

插入数据到表里

顺序插入

复制代码
insert into mytest values("xiaohua","b","2024-06-17");
insert into 表名 values(第一列的值,第二列的值,第三列);

乱序插入

复制代码
insert into mytest (colour,name,birth)values("r","xiao","2024-07-17");
insert into 表名(列名 3,列名 1,列名 2) values(第三列值,第一列值,第二列值)

mysql 的修改

修改表的名字

复制代码
alter table mytest rename test;
alter table 旧的表的名字 rename 新的表的名字;

修改列的名字

复制代码
alter table test change colour new_colour varchar(10);
alter table 表名 change 旧的列名 新的列名 新的列名的格式

新增列

复制代码
alter table test add sex varchar(5);
alter table 表名 add 要新增的列的名字 要新增的列的格式

删除列

复制代码
alter table test drop sex1;
alter table 表名 drop 要删除的列名字;

mysql 的更新

更新数据

复制代码
update test set age=1,sex="f" where new_colour="r";
update 表名 set 要设置的列=xxx 条件;

mysql 的删除

删除数据

复制代码
delete from test where name="hua";
delete from 表名 条件;

删除表

复制代码
drop table 表名;

删除数据库

复制代码
drop database 数据库的名字

mysql 的排序

升序(默认)

复制代码
select * from test order by age ASC;
select *from 表名 order by 列名 ASC;

降序

复制代码
select * from test order by age DESC;
select * from 表名 order by 列名 DESC;

C 语言操作数据库

初始化数据库核心结构体

函数的功能

初始化数据库的核心结构体

函数的头文件

复制代码
mysql/mysql.h

函数的原型

复制代码
MYSQL *mysql_init(MYSQL *mysql)

函数的参数

MYSQL *mysql:mysql 的核心结构体指针

函数的返回值

成功返回 mysql 的核心结构体指针

失败返回 NULL

链接数据库

函数的功能

连接 mysql 数据库

函数的头文件

复制代码
mysql/mysql.h

函数的原型

复制代码
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 client_flag)

函数的参数

MYSQL *mysql, mysql 的核心结构体

const char *host, localhost//本地

const char *user, 用户名 root

const char *passwd, 密码 1

const char *db, 数据库

unsigned int port, 端口号 0

const char *unix_socket, 套接字 NULL

unsigned long client_flag 标志 0

函数的返回值

成功返回 mysql 的核心结构体

失败返回 NULL

执行 sql 语句

函数的功能

执行 mysql 的语句

函数的原型

复制代码
int mysql_query(MYSQL *mysql, const char *query)

函数的参数

MYSQL *mysql, mysql 的核心结构体

const char *query 要执行的 mysql 的语句

函数的返回值

成功返回 0

失败返回 非零

存储 sql 执行结果

函数的功能

存储 mysql 的执行结果

函数的头文件

复制代码
mysql/mysql.h

函数的原型

复制代码
MYSQL_RES *mysql_store_result(MYSQL *mysql)

函数的参数

MYSQL *mysql: mysql的核心结构体

函数的返回值

成功返回 mysql 结果集合结构体

失败返回 NULL

对 mysql 结果集合的操作函数

获取结果集合里的列的数目

复制代码
unsigned int mysql_num_fields(MYSQL_RES* res)

获取结果集合里行的数目

复制代码
my_ulonglong mysql_num_rows(MYSQL_RES *result)

获取列的信息

复制代码
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

获取行的数据

复制代码
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

释放 mysql 的查询的结果集合结构体

函数的功能

释放结果集合结构体

函数的头文件

复制代码
mysql/mysql.h

函数的原型

复制代码
void mysql_free_result(MYSQL_RES *result)

函数的参数

MYSQL_RES *result:结果集合结构体

函数的返回值

关闭数据库

函数的功能

关闭数据库

函数的头文件

复制代码
mysql/mysql.h

函数的原型

复制代码
void mysql_close(MYSQL *mysql) 

函数的参数

MYSQL *mysql:mysql 的核心结构体

函数的返回值

实例

复制代码
#include <stdio.h>
#include <mysql/mysql.h>



MYSQL * mysql=NULL;// MySQL 连接句柄

MYSQL_RES * mysql_res=NULL;// 查询结果集

MYSQL_FIELD * line_msg=NULL;// 字段元数据
int i,j;
int row_num,line_num;// 行数和列数
MYSQL_ROW row_msg={0};// 用于存储每一行的查询结果

int main()
{
	//1初始化数据库
	mysql = mysql_init(NULL);//会分配一个新的 MYSQL 结构体
	if (mysql == NULL)
	{
		perror("mysql_init");
		return -1;
	}
	//2连接到MYSQL的服务
	mysql = mysql_real_connect(mysql,"localhost" , "root","521125", "mytest", 0, NULL, 0); // 参数依次为:连接句柄、名主机、用户名、密码、数据库名、端口号、套接字、标志
	
	//3执行MYSQL的语句
	mysql_query(mysql,"select * from test;" ); // 调用 mysql_store_result() 获取查询结果集
	
	//4存储MYSQL的运行结果 到结构体里
	mysql_res = mysql_store_result(mysql);
	if (mysql_res == NULL)
	{
		perror("mysql_store_result");
		return -1;
	}
	//5从结构体取信息
		line_num=mysql_num_fields(mysql_res);// 获取结果集中的列数
		row_num=mysql_num_rows(mysql_res); // 获取结果集中的行数
	printf("line_num=%d row_num=%d\n",line_num,row_num);
	printf("+------+--------+------------+------+\n");
	for(i=0;i<line_num;i++)// 遍历每一列,打印字段名称
	{
		if((i+1)==line_num)// 如果是最后一列
		{
			line_msg=mysql_fetch_field(mysql_res);// 获取当前字段的元数
			printf("	|%s",line_msg->name);// 打印字段名称
			continue;
		}
		line_msg=mysql_fetch_field(mysql_res);
		printf("|%s	",line_msg->name);
	}
	printf("\n");
	printf("+------+--------+------------+------+\n");
	for(i=0;i<row_num;i++) // 遍历每一行,打印行数据
	{
		row_msg=mysql_fetch_row(mysql_res);// 获取当前行的数据
		for(j=0;j<line_num;j++)
		{
			if((j+1)==line_num)// 如果是最后一列
			{
				printf("|%s  |",row_msg[j]);
				continue;
			}
			printf("|%s	",row_msg[j]);
		}
		printf("\n");
		printf("+------+--------+------------+------+\n");
	}
	//6释放结果集合结构体
	mysql_free_result(mysql_res);// 调用 mysql_free_result() 释放结果集占用的内存
	
	//7关闭数据库
	mysql_close(mysql);// 调用 mysql_close() 关闭 MySQL 连接

	
	return 0;
}
相关推荐
大青蛙蛙1 小时前
漫画Android:从网络加载一个50MB的图片,要注意什么?
android
掘根4 小时前
【MySQL进阶】常用MySQL程序
数据库·mysql
小毛驴8504 小时前
Windows MySQL8密码忘了解决办法
mysql
kumalab5 小时前
Android及Harmonyos实现图片进度显示效果
android·华为·harmonyos
PH = 75 小时前
MySQL的Sql优化经验总结
数据库·mysql
ynxw5 小时前
Unity AR 实现模型交互
android·unity·ar·交互
alexhilton5 小时前
MVI架构:Compose中的响应式状态管理
android·kotlin·android jetpack
fouryears_234175 小时前
Mysql初阶操作:对命令的详细介绍
数据库·mysql
没有口袋啦6 小时前
《k8s 部署》常见报错类型1
linux·容器·kubernetes