ToB企服应用市场:ToB评测及商务社交产业平台
标题:
数据库的增删改查
[打印本页]
作者:
兜兜零元
时间:
2024-9-3 03:18
标题:
数据库的增删改查
一、命令行操作
1、启动/重启数据库
service mysql restart
复制代码
2.2 登陆mysql(必要输入暗码)
mysql -u root -p
复制代码
2.3 创建数据库
指令格式:create database 数据库名字;
例子:create database CD2401;
复制代码
2.4 查看数据库
show databases;
复制代码
2.5 切换到使用的数据库
指令格式:use 数据库名;
案例 : use CD2401;
复制代码
2.6查看目前所在数据库
select database();
复制代码
2.7 删除数据库
指令格式:DROP database 数据库名;
案例 : DROP database CD2401;
复制代码
2.8 创建数据表
指令格式 :create table 表名(字段1 字段类型,字段2 字段类型……);
案例: create table hum(value int,data time);
复制代码
2.9 查看数据库中所有的表
show tables;
复制代码
2.10 查看表中字段
指令格式 :DESC 表名;
案例: DESC hum;
复制代码
2.11 增加表中信息(重点)
指令格式 :INSERT INTO 表名(数据列1,数据列2) VALUES(数据1,数据2);
案例1: INSERT INTO hum(value,data) VALUES(50,NOW());
案例2: INSERT INTO hum(value,data) VALUES(50,'2024-06-19 10:38:00');
复制代码
2.12 查看表中信息(重点)
指令格式 :SELECT * FROM 表名; (查看所有数据)
案例1: SELECT * FROM hum;
复制代码
案例2:SELECT value FROM hum; 查看特定的列
案例3:SELECT value,data FROM hum; 查看特定的列
复制代码
案例4:SELECT * FROM hum WHERE value > 45; 查看指定条件
案例5:SELECT * FROM hum WHERE data > "2024-06-19 10:37:00"; 查看指定条件
复制代码
案例6:SELECT * FROM hum ORDER BY data ASC;(时间排序,从早到晚)
案例7:SELECT * FROM hum ORDER BY data DESC;(时间排序,从晚到早)
复制代码
2.13 修改表中信息(重点)
2.13 修改表中信息(重点)
命令格式:UPDATE 表名 SET column1 =value1,column2 =value2,…… WHERE condition;
案例: UPDATE hum SET value =40 WHERE data ='2024-06-19 10:37:00';
复制代码
2.14 删除表中信息(重点)
命令格式 DELETE FROM 表名 WHERE 条件;
案例1: DELETE FROM hum WHERE data ='2024-06-19 10:38:00';
案例2: DELETE FROM hum;删除表中所有信息
复制代码
二、c语言操作数据库
2.1设置情况
sudo apt-get install libmysqld-dev
复制代码
2.2 设置远程登陆
mysql> use mysql;
复制代码
UPDATE user set host ='%' where user = 'root'
复制代码
flush privileges;
复制代码
quit;
复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码
44行修改设置为0.0.0.0
保存退出,重启MySQL。
service mysql restart
复制代码
2.3 使用c连接数据库
#include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
#include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
#include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
#include <string.h> //包含头文件string.h,功能是字符串处理函数。
int main(int argc, char const *argv[])
{
MYSQL *ret; //定义MYSQL指针变量ret
MYSQL mysql; //定义mysql结构体
mysql_init(&mysql);//初始化mysql结构体
//连接数据库
ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
if(ret==NULL)
{
printf("Connect MySQL failed\n");
return 0;
}
printf("Connect MySQL success\n");
return 0;
}
复制代码
编译指令
gcc MYSQL_0.c -lmysqlclient
复制代码
2.4使用C执行sql语句
#include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
#include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
#include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
#include <string.h> //包含头文件string.h,功能是字符串处理函数。
int main(int argc, char const *argv[])
{
MYSQL *ret; //定义MYSQL指针变量ret
MYSQL mysql; //定义mysql结构体
mysql_init(&mysql);//初始化mysql结构体
//连接数据库
ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
if(ret==NULL)
{
printf("Connect MySQL failed\n");
return 0;
}
printf("Connect MySQL success\n");
//执行SQL语句
/*组装SQL语句*/
//char sql[100];
//strcpy(sql,"SELECT * FROM CD2401.student");
char *sql_str="INSERT INTO hum(value,data) VALUES(50,NOW());";
if(mysql_query(&mysql,sql_str))
{
printf("SQL execute failed:%s\n",mysql_error(&mysql));
return 0;
}
printf("SQL execute success\n");
//关闭连接
mysql_close(&mysql);
return 0;
}
复制代码
2.5 案例
#include <stdio.h> //引入标准输入输出库
#include <stdlib.h> //引入标准库
#include <string.h> //引入字符串处理库
#include <unistd.h> //引入unistd.h库
#include <fcntl.h> //引入fcntl.h库
#include <termios.h> //引入termios.h库
#include <mysql/mysql.h>
int main()
{
int fd; //文件描述符
struct termios options; //终端属性结构体
unsigned char buffer[256]; //接收到的数据缓冲区
int bytes_read; //读取的字节数
char name_type[10];
int value[10];
MYSQL *ret; //定义MYSQL指针变量ret
MYSQL mysql; //定义mysql结构体
mysql_init(&mysql);//初始化mysql结构体
//连接数据库
ret=mysql_real_connect(&mysql,"10.7.164.132","root","1234","hthl",3306,NULL,0);
if(ret==NULL)
{
printf("Connect MySQL failed\n");
return 0;
}
printf("Connect MySQL success\n");
//尝试打开串口
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);//尝试以读写方式打开串行端口/dev/ttyUSB0
if(fd < 0) //打开失败
{
perror("opaaen");
exit(1);
}
else //打开成功
{
fcntl(fd,F_SETFL, 0); //设置非阻塞模式
printf("Serial port opened successfully.\n");
}
tcgetattr(fd, &options); //获取终端属性
cfsetispeed(&options, B115200); //设置输入波特率为115200
cfsetospeed(&options, B115200); //设置输出波特率为115200
options.c_cflag &= ~PARENB; //设置无校验位
options.c_cflag &= ~CSTOPB; //设置1位停止位
options.c_cflag &= ~CSIZE; //设置数据位数为8位
options.c_cflag &= ~CRTSCTS;//关闭硬件流控
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //设置非规范模式
//关闭流控制
options.c_iflag &= ~(IXON | IXOFF | IXANY);
tcsetattr(fd, TCSANOW, &options); //设置终端属性
printf("port set to 115200, 8N1.\n");
while(1)
{
tcflush(fd, TCIFLUSH); //清空输入缓存
bytes_read = read(fd, buffer, 256); //读取串口数据
if(bytes_read > 0) //有数据
{
// printf("Received %d bytes: ", bytes_read);
// for(int i = 0; i < bytes_read; i++)
// {
// printf("%02X ", buffer[i]); //打印十六进制数据
// }
// printf("\n");
if(strlen(buffer) == 0)
{
continue;
}
char *table_name;
int value = 0;
table_name = strtok(buffer,":");
value = atoi(strtok(NULL,":"));
char buf[128] = {0};
sprintf(buf,"INSERT INTO %s(value,data) VALUES(%d,now())",table_name,value);
if(mysql_query(&mysql,buf))
{
printf("SQL exeute failed:%s\n",mysql_error(&mysql));
return 0;
}
printf("SQL execute success\n");
}
else if(bytes_read < 0) //读取失败
{
perror("read");
exit(1);
}
}
close(fd); //关闭串口
mysql_close(&mysql);n g
}
复制代码
2.6使用c执行插入操作
#include <stdio.h> //引入标准输入输出库
#include <stdlib.h> //引入标准库
#include <string.h> //引入字符串处理库
#include <unistd.h> //引入unistd.h库
#include <fcntl.h> //引入fcntl.h库
#include <termios.h> //引入termios.h库
int main()
{
int fd; //文件描述符
struct termios options; //终端属性结构体
unsigned char buffer[256]; //接收到的数据缓冲区
int bytes_read; //读取的字节数
//尝试打开串口
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);//尝试以读写方式打开串行端口/dev/ttyUSB0
if(fd < 0) //打开失败
{
perror("opaaen");
exit(1);
}
else //打开成功
{
fcntl(fd,F_SETFL, 0); //设置非阻塞模式
printf("Serial port opened successfully.\n");
}
tcgetattr(fd, &options); //获取终端属性
cfsetispeed(&options, B115200); //设置输入波特率为115200
cfsetospeed(&options, B115200); //设置输出波特率为115200
options.c_cflag &= ~PARENB; //设置无校验位
options.c_cflag &= ~CSTOPB; //设置1位停止位
options.c_cflag &= ~CSIZE; //设置数据位数为8位
options.c_cflag &= ~CRTSCTS;//关闭硬件流控
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //设置非规范模式
//关闭流控制
options.c_iflag &= ~(IXON | IXOFF | IXANY);
tcsetattr(fd, TCSANOW, &options); //设置终端属性
printf("port set to 115200, 8N1.\n");
while (1)
{
size_t bytes_written = write(fd,"Servo_ON\r\n",10);
if (bytes_written < 0) //发送失败
{
perror("write");
exit(1);
}
else //发送成功
{
printf("Sent %ld bytes.\n", bytes_written);
}
usleep(500000);
}
}
复制代码
3.5 使用C执行sql查询语句
#include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
#include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
#include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
#include <string.h> //包含头文件string.h,功能是字符串处理函数。
int main(int argc, char const *argv[])
{
MYSQL *ret; //定义MYSQL指针变量ret
MYSQL mysql; //定义mysql结构体
mysql_init(&mysql);//初始化mysql结构体
//连接数据库
ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
if(ret==NULL)
{
printf("Connect MySQL failed\n");
return 0;
}
printf("Connect MySQL success\n");
//执行SQL语句
/*组装SQL语句*/
char *sql_str="SELECT * FROM hum ORDER BY data DESC LIMIT 1";//查询数据,安装时间降序排列,取第一条数据
if(mysql_query(&mysql,sql_str))
{
printf("SQL execute failed:%s\n",mysql_error(&mysql));
return 0;
}
printf("SQL execute success\n");
//储存查询结果
MYSQL_RES *result=mysql_store_result(&mysql);
if(result==NULL)
{
printf("SQL result failed:%s\n",mysql_error(&mysql));
return 0;
}
printf("SQL result success\n");
//输出查询结果
MYSQL_ROW row;
row=mysql_fetch_row(result);
if(row==NULL)
{
printf("SQL fetch failed:%s\n",mysql_error(&mysql));
return 0;
}
else
{
printf("humidity value :%d,date :%s\n",row[0],row[1]);
}
//释放查询结果
mysql_free_result(result);
//关闭连接
mysql_close(&mysql);
return 0;
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4