linux学习8mysql

数据库建模与建库建表

DROP DATABASE KING_DB;#删除数据库

CREATE DATABASE KING_DB;#创建数据库

SHOW DATABASES;#显示数据库

USE KING_DB;#使用数据库

CREATE TABLE TBL_USER( #创建User表
U_ID INT PRIMARY KEY AUTO_INCREMENT, #主键,int型,自增
U_NAME VARCHAR(32), #名字char型
U_GENGDER VARCHAR(8) #性别
);

SHOW TABLES; #实现table

在这里插入图片描述

数据库编程连接与插入数据

在node server服务器上安装

sudo apt-get install libmysqlclient-dev

于是可以在ns代码里写mysql语句

#include<mysql.h>
#include<stdio.h>
#include<string.h>
//C R U D -->增删改查

#define KING_DB_SERVER_IP        "192.168.190.129"
#define KING_DB_SERVER_PORT      3306

#define KING_DB_USERNAME         "admin"
#define KING_DB_PASSWORD         "123456"

#define KING_DB_DEFAULTDB        "KING_DB"

#define SQL_INSERT_TBL_USER      "INSERT TBL_USER(U_NAME,U_GENGDER) VALUES('qiuxiang','woman');"
int main(){

	MYSQL mysql;//ns使用数据库的句柄,通道

	if (NULL == mysql_init(&mysql)) {  //初始化mysql
		printf("mysql_init : %s\n", mysql_error(&mysql));
		return -1;
	}

	if (!mysql_real_connect(&mysql, KING_DB_SERVER_IP, KING_DB_USERNAME, KING_DB_PASSWORD,   //连接数据库,返回0不成功
		KING_DB_DEFAULTDB, KING_DB_SERVER_PORT, NULL, 0)) {

		printf("mysql_real_connect : %s\n", mysql_error(&mysql));
		return -2;
	}

	//mysql -->insert

	if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {    //返回0成功
		printf("mysql_real_query : %s\n", mysql_error(&mysql));
	}

	mysql_close(&mysql);

	return 0;
}

执行:

gcc -o mysql2 mysql2.c -I /usr/include/mysql/ -lmysqlclient

在这里插入图片描述
在这里插入图片描述

读取数据

#include<mysql.h>
#include<stdio.h>
#include<string.h>
//C R U D -->增删改查

#define KING_DB_SERVER_IP        "192.168.190.129"
#define KING_DB_SERVER_PORT      3306

#define KING_DB_USERNAME         "admin"
#define KING_DB_PASSWORD         "123456"

#define KING_DB_DEFAULTDB        "KING_DB"

#define SQL_INSERT_TBL_USER      "INSERT TBL_USER(U_NAME,U_GENGDER) VALUES('darren','man');"
#define SQL_SELECT_TBL_USER      "SELECT * FROM TBL_USER;"

int king_mysql_select(MYSQL *handle) {
	
	//mysql_real_query -->sql
	if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {    //返回0成功
		printf("mysql_real_query : %s\n", mysql_error(handle));
		return -1;
	}
	//store  -->
	MYSQL_RES *res = mysql_store_result(handle);
	if (res == NULL) {
		printf("mysql_store_result : %s\n", mysql_error(handle));
		return -2;
	}
	//rows/fields
	int rows = mysql_num_rows(res);
	printf("rows :%d\n", rows);

	int fields = mysql_num_fields(res);
	printf("fields :%d\n", fields);
	//fetch
	MYSQL_ROW row;
	while ((row = mysql_fetch_row(res))) {

		int i = 0;
		for (i = 0; i < fields; i++) {
			printf("%s\t",row[i]);
		}
		printf("\n");
	}
	
	mysql_free_result(res);

	return 0;
}



int main(){

	MYSQL mysql;//ns使用数据库的句柄,通道

	if (NULL == mysql_init(&mysql)) {  //初始化mysql
		printf("mysql_init : %s\n", mysql_error(&mysql));
		return -1;
	}

	if (!mysql_real_connect(&mysql, KING_DB_SERVER_IP, KING_DB_USERNAME, KING_DB_PASSWORD,   //连接数据库,返回0不成功
		KING_DB_DEFAULTDB, KING_DB_SERVER_PORT, NULL, 0)) {

		printf("mysql_real_connect : %s\n", mysql_error(&mysql));
		return -2;
	}

	//mysql -->insert
	
#if 1
	if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {    //返回0成功
		printf("mysql_real_query : %s\n", mysql_error(&mysql));
	}
#endif
	king_mysql_select(&mysql);
	mysql_close(&mysql);

	return 0;
}

执行:
在这里插入图片描述
在这里插入图片描述

数据删除与存储过程调用

DELIMITER $$  #以$$结尾
CREATE PROCEDURE PROC_DELETE_USER(IN UNAME VARCHAR(32)) #创建存储函数
BEGIN
SET SQL_SAFE_UPDATES=0;
DELETE FROM TBL_USER WHERE U_NAME=UNAME;
SET SQL_SAFE_UPDATES=1;
END$$
CALL PROC_DELETE_USER('King') #调用函数删除

在这里插入图片描述
可以看到king被删除掉了

#include<mysql.h>
#include<stdio.h>
#include<string.h>
//C R U D -->增删改查

#define KING_DB_SERVER_IP        "192.168.190.129"
#define KING_DB_SERVER_PORT      3306

#define KING_DB_USERNAME         "admin"
#define KING_DB_PASSWORD         "123456"

#define KING_DB_DEFAULTDB        "KING_DB"

#define SQL_INSERT_TBL_USER      "INSERT TBL_USER(U_NAME,U_GENGDER) VALUES('King','man');"
#define SQL_SELECT_TBL_USER      "SELECT * FROM TBL_USER;"

#define SQL_DELETE_TBL_USER      "CALL PROC_DELETE_USER('King');"

int king_mysql_select(MYSQL *handle) {
	
	//mysql_real_query -->sql
	if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {    //返回0成功
		printf("mysql_real_query : %s\n", mysql_error(handle));
		return -1;
	}
	//store  -->
	MYSQL_RES *res = mysql_store_result(handle);
	if (res == NULL) {
		printf("mysql_store_result : %s\n", mysql_error(handle));
		return -2;
	}
	//rows/fields
	int rows = mysql_num_rows(res);
	printf("rows :%d\n", rows);

	int fields = mysql_num_fields(res);
	printf("fields :%d\n", fields);
	//fetch
	MYSQL_ROW row;
	while ((row = mysql_fetch_row(res))) {

		int i = 0;
		for (i = 0; i < fields; i++) {
			printf("%s\t",row[i]);
		}
		printf("\n");
	}
	
	mysql_free_result(res);

	return 0;
}



int main(){

	MYSQL mysql;//ns使用数据库的句柄,通道

	if (NULL == mysql_init(&mysql)) {  //初始化mysql
		printf("mysql_init : %s\n", mysql_error(&mysql));
		return -1;
	}

	if (!mysql_real_connect(&mysql, KING_DB_SERVER_IP, KING_DB_USERNAME, KING_DB_PASSWORD,   //连接数据库,返回0不成功
		KING_DB_DEFAULTDB, KING_DB_SERVER_PORT, NULL, 0)) {

		printf("mysql_real_connect : %s\n", mysql_error(&mysql));
		return -2;
	}

	//mysql -->insert
	printf("case : mysql --> insert\n");
#if 1
	if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {    //返回0成功
		printf("mysql_real_query : %s\n", mysql_error(&mysql));
	}
#endif
	king_mysql_select(&mysql);

	//mysql -->delete
	printf("case : mysql --> delete\n");

#if 1
	if (mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))) {    //返回0成功
		printf("mysql_real_query : %s\n", mysql_error(&mysql));
	}
#endif


	king_mysql_select(&mysql);
	mysql_close(&mysql);

	return 0;
}

执行过程:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值