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;
}
相关推荐
Awkwardx1 小时前
Linux系统编程—线程同步与互斥
linux·服务器
unicrom_深圳市由你创科技2 小时前
用 CTE 重构嵌套子查询:让复杂报表 SQL 可读性提升 80%
mysql·重构
赖small强2 小时前
[Linux]内核队列实现详解
linux·kfifo·请求队列·工作队列(workqueue)·等待队列·kfifo_init
晨陌y3 小时前
深入剖析:仓颉语言的性能优化核心技术
android·性能优化·仓颉
xhbh6663 小时前
【实战总结】MySQL日期加减大全:日期计算、边界处理与性能优化详解
android
00后程序员张3 小时前
如何提高 IPA 安全性 多工具组合打造可复用的 iOS 加固与反编译防护体系(IPA 安全 iOS 加固 无源码混淆 Ipa Guard 实战)
android·安全·ios·小程序·uni-app·iphone·webview
张拭心3 小时前
“不卷 AI、不碰币、下班不收消息”——Android 知名技术大牛 Jake Wharton 的求职价值观
android·前端·aigc
www.023 小时前
linux服务器升级显卡驱动(笔记)
linux·运维·服务器·笔记·ubuntu·服务器环境
准时准点睡觉4 小时前
window安装MYSQL5.5出错:a windows service with the name MYSQL alreadyexists....
数据库·windows·mysql
wdfk_prog4 小时前
[Linux]学习笔记系列 -- [kernel][time]hrtimer
linux·笔记·学习