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;
}
相关推荐
不太可爱的叶某人2 小时前
【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
笔记·学习·mysql
量子联盟3 小时前
原创-基于 PHP 和 MySQL 的证书管理系统,免费开源
开发语言·mysql·php
何盖(何松影)4 小时前
Android T startingwindow使用总结
android
飞翔的佩奇4 小时前
Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
java·数据库·mysql·毕业设计·ssm·旅游·jsp
Two_brushes.5 小时前
【linux 网络】网络基础
linux·网络
Code Warrior5 小时前
【Linux】基础开发工具(3)
linux·服务器
小李飞飞砖5 小时前
Android 依赖注入框架详解
android
SUNxuetian5 小时前
【Android Studio】升级AGP-8.6.1,Find Usage对Method失效的处理方法!
android·ide·gradle·android studio·安卓
鬼才血脉5 小时前
Linux(centos)安装 MySQL 8
linux·mysql·centos
guygg885 小时前
ubuntu手动编译VTK9.3 Generating qmltypes file 失败
linux·运维·ubuntu