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