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;
}