数据库的增删改查

打印 上一主题 下一主题

主题 802|帖子 802|积分 2406

一、命令行操作

1、启动/重启数据库

  1. service mysql restart
复制代码
2.2 登陆mysql(必要输入暗码)

  1. mysql -u root -p
复制代码


2.3 创建数据库

  1. 指令格式:create database 数据库名字;
  2. 例子:create database CD2401;
复制代码


2.4 查看数据库

  1. show databases;
复制代码




2.5 切换到使用的数据库

  1. 指令格式:use 数据库名;
  2. 案例 :  use CD2401;
复制代码



2.6查看目前所在数据库

  1. select database();
复制代码



2.7 删除数据库

  1. 指令格式:DROP database 数据库名;
  2. 案例 :  DROP database CD2401;
复制代码
2.8 创建数据表

  1. 指令格式 :create table 表名(字段1 字段类型,字段2 字段类型……);
  2. 案例:      create table hum(value int,data time);
复制代码
2.9 查看数据库中所有的表

  1. show tables;
复制代码


2.10 查看表中字段

  1. 指令格式 :DESC 表名;
  2. 案例:     DESC hum;
复制代码


2.11 增加表中信息(重点)

  1. 指令格式 :INSERT INTO 表名(数据列1,数据列2) VALUES(数据1,数据2);
  2. 案例1:     INSERT INTO hum(value,data) VALUES(50,NOW());
  3. 案例2:     INSERT INTO hum(value,data) VALUES(50,'2024-06-19 10:38:00');
复制代码




2.12 查看表中信息(重点)

  1. 指令格式 :SELECT * FROM 表名;  (查看所有数据)
  2. 案例1:    SELECT * FROM hum;
复制代码


  1. 案例2:SELECT value FROM hum; 查看特定的列
  2. 案例3:SELECT value,data FROM hum; 查看特定的列
复制代码




  1. 案例4:SELECT * FROM hum WHERE value > 45; 查看指定条件
  2. 案例5:SELECT * FROM hum WHERE data > "2024-06-19 10:37:00"; 查看指定条件
复制代码



  1. 案例6:SELECT * FROM hum ORDER BY data ASC;(时间排序,从早到晚)
  2. 案例7:SELECT * FROM hum ORDER BY data DESC;(时间排序,从晚到早)
复制代码




2.13 修改表中信息(重点)

  1. 2.13 修改表中信息(重点)
  2. 命令格式:UPDATE 表名 SET column1 =value1,column2 =value2,…… WHERE condition;
  3. 案例:    UPDATE hum SET value =40 WHERE data ='2024-06-19 10:37:00';
复制代码



2.14 删除表中信息(重点)

  1. 命令格式 DELETE FROM 表名 WHERE 条件;
  2. 案例1:  DELETE FROM hum WHERE data ='2024-06-19 10:38:00';
  3. 案例2:  DELETE FROM hum;删除表中所有信息
复制代码


二、c语言操作数据库

2.1设置情况

  1. sudo apt-get install libmysqld-dev
复制代码
2.2 设置远程登陆

  1. mysql> use mysql;
复制代码


  1. UPDATE user set host ='%' where user = 'root'
复制代码


  1. flush privileges;
复制代码


  1. quit;
复制代码


  1. sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码
44行修改设置为0.0.0.0


保存退出,重启MySQL。
  1. service mysql restart
复制代码


2.3 使用c连接数据库

  1. #include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
  2. #include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
  3. #include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
  4. #include <string.h> //包含头文件string.h,功能是字符串处理函数。
  5. int main(int argc, char const *argv[])
  6. {
  7.     MYSQL *ret; //定义MYSQL指针变量ret
  8.     MYSQL mysql; //定义mysql结构体
  9.     mysql_init(&mysql);//初始化mysql结构体
  10.     //连接数据库
  11.     ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
  12.     if(ret==NULL)
  13.     {
  14.         printf("Connect MySQL failed\n");
  15.         return 0;
  16.     }
  17.     printf("Connect MySQL success\n");
  18.     return 0;
  19. }
复制代码
编译指令
  1. gcc MYSQL_0.c -lmysqlclient
复制代码



2.4使用C执行sql语句

  1. #include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
  2. #include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
  3. #include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
  4. #include <string.h> //包含头文件string.h,功能是字符串处理函数。
  5. int main(int argc, char const *argv[])
  6. {
  7.     MYSQL *ret; //定义MYSQL指针变量ret
  8.     MYSQL mysql; //定义mysql结构体
  9.     mysql_init(&mysql);//初始化mysql结构体
  10.     //连接数据库
  11.     ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
  12.     if(ret==NULL)
  13.     {
  14.         printf("Connect MySQL failed\n");
  15.         return 0;
  16.     }
  17.     printf("Connect MySQL success\n");
  18.     //执行SQL语句
  19.     /*组装SQL语句*/
  20.     //char sql[100];
  21.     //strcpy(sql,"SELECT * FROM CD2401.student");
  22.     char *sql_str="INSERT INTO hum(value,data) VALUES(50,NOW());";
  23.     if(mysql_query(&mysql,sql_str))
  24.     {
  25.         printf("SQL execute failed:%s\n",mysql_error(&mysql));
  26.         return 0;
  27.     }
  28.         printf("SQL execute success\n");
  29.    
  30.    
  31.     //关闭连接
  32.     mysql_close(&mysql);
  33.     return 0;
  34. }
复制代码
2.5 案例

  1. #include <stdio.h>   //引入标准输入输出库
  2. #include <stdlib.h>  //引入标准库
  3. #include <string.h>  //引入字符串处理库
  4. #include <unistd.h>  //引入unistd.h库
  5. #include <fcntl.h>   //引入fcntl.h库
  6. #include <termios.h> //引入termios.h库
  7. #include <mysql/mysql.h>
  8. int main()
  9. {
  10.     int fd;          //文件描述符
  11.     struct termios options; //终端属性结构体
  12.     unsigned char buffer[256]; //接收到的数据缓冲区
  13.     int bytes_read; //读取的字节数
  14.     char name_type[10];
  15.     int value[10];
  16.     MYSQL *ret; //定义MYSQL指针变量ret
  17.     MYSQL mysql; //定义mysql结构体
  18.     mysql_init(&mysql);//初始化mysql结构体
  19.     //连接数据库
  20.     ret=mysql_real_connect(&mysql,"10.7.164.132","root","1234","hthl",3306,NULL,0);
  21.     if(ret==NULL)
  22.     {
  23.         printf("Connect MySQL failed\n");
  24.         return 0;
  25.     }
  26.     printf("Connect MySQL success\n");
  27.     //尝试打开串口
  28.     fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);//尝试以读写方式打开串行端口/dev/ttyUSB0
  29.     if(fd < 0)    //打开失败
  30.     {
  31.         perror("opaaen");
  32.         exit(1);
  33.     }
  34.     else    //打开成功
  35.     {
  36.         fcntl(fd,F_SETFL, 0); //设置非阻塞模式
  37.         printf("Serial port opened successfully.\n");
  38.     }
  39.     tcgetattr(fd, &options); //获取终端属性
  40.     cfsetispeed(&options, B115200); //设置输入波特率为115200
  41.     cfsetospeed(&options, B115200); //设置输出波特率为115200
  42.     options.c_cflag &= ~PARENB; //设置无校验位
  43.     options.c_cflag &= ~CSTOPB; //设置1位停止位
  44.     options.c_cflag &= ~CSIZE; //设置数据位数为8位
  45.     options.c_cflag &= ~CRTSCTS;//关闭硬件流控
  46.     options.c_cflag |= CS8;
  47.     options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //设置非规范模式
  48.     //关闭流控制
  49.     options.c_iflag &= ~(IXON | IXOFF | IXANY);
  50.     tcsetattr(fd, TCSANOW, &options); //设置终端属性
  51.     printf("port set to 115200, 8N1.\n");
  52.     while(1)
  53.     {
  54.         tcflush(fd, TCIFLUSH); //清空输入缓存
  55.         bytes_read = read(fd, buffer, 256); //读取串口数据
  56.         if(bytes_read > 0) //有数据
  57.         {
  58.             //   printf("Received %d bytes: ", bytes_read);
  59.             //   for(int i = 0; i < bytes_read; i++)
  60.             //   {
  61.             //       printf("%02X ", buffer[i]); //打印十六进制数据
  62.             //   }
  63.             //   printf("\n");
  64.            
  65.             if(strlen(buffer) == 0)
  66.             {
  67.                 continue;
  68.             }
  69.             char *table_name;
  70.             int value = 0;
  71.             table_name  = strtok(buffer,":");
  72.             value = atoi(strtok(NULL,":"));
  73.             char buf[128] = {0};
  74.             sprintf(buf,"INSERT INTO %s(value,data) VALUES(%d,now())",table_name,value);
  75.             if(mysql_query(&mysql,buf))
  76.             {
  77.                 printf("SQL exeute failed:%s\n",mysql_error(&mysql));
  78.                 return 0;
  79.             }
  80.             printf("SQL execute success\n");
  81.         }
  82.         else if(bytes_read < 0) //读取失败
  83.         {
  84.             perror("read");
  85.             exit(1);
  86.         }
  87.     }
  88.     close(fd); //关闭串口
  89.     mysql_close(&mysql);n g
  90. }
复制代码
2.6使用c执行插入操作

  1. #include <stdio.h>   //引入标准输入输出库
  2. #include <stdlib.h>  //引入标准库
  3. #include <string.h>  //引入字符串处理库
  4. #include <unistd.h>  //引入unistd.h库
  5. #include <fcntl.h>   //引入fcntl.h库
  6. #include <termios.h> //引入termios.h库
  7. int main()
  8. {
  9.    
  10.     int fd;          //文件描述符
  11.     struct termios options; //终端属性结构体
  12.     unsigned char buffer[256]; //接收到的数据缓冲区
  13.     int bytes_read; //读取的字节数
  14. //尝试打开串口
  15.     fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);//尝试以读写方式打开串行端口/dev/ttyUSB0
  16.     if(fd < 0)    //打开失败
  17.     {
  18.         perror("opaaen");
  19.         exit(1);
  20.     }
  21.     else    //打开成功
  22.     {
  23.         fcntl(fd,F_SETFL, 0); //设置非阻塞模式
  24.         printf("Serial port opened successfully.\n");
  25.     }
  26.     tcgetattr(fd, &options); //获取终端属性
  27.     cfsetispeed(&options, B115200); //设置输入波特率为115200
  28.     cfsetospeed(&options, B115200); //设置输出波特率为115200
  29.     options.c_cflag &= ~PARENB; //设置无校验位
  30.     options.c_cflag &= ~CSTOPB; //设置1位停止位
  31.     options.c_cflag &= ~CSIZE; //设置数据位数为8位
  32.     options.c_cflag &= ~CRTSCTS;//关闭硬件流控
  33.     options.c_cflag |= CS8;
  34.     options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //设置非规范模式
  35.     //关闭流控制
  36.     options.c_iflag &= ~(IXON | IXOFF | IXANY);
  37.    
  38.     tcsetattr(fd, TCSANOW, &options); //设置终端属性
  39.     printf("port set to 115200, 8N1.\n");
  40.     while (1)
  41.     {
  42.         size_t bytes_written = write(fd,"Servo_ON\r\n",10);
  43.         if (bytes_written < 0) //发送失败
  44.         {
  45.             perror("write");
  46.             exit(1);
  47.         }
  48.         else //发送成功
  49.         {
  50.             printf("Sent %ld bytes.\n", bytes_written);
  51.         }
  52.         usleep(500000);   
  53.     }
  54.    
  55. }
复制代码

3.5 使用C执行sql查询语句

  1. #include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
  2. #include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
  3. #include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
  4. #include <string.h> //包含头文件string.h,功能是字符串处理函数。
  5. int main(int argc, char const *argv[])
  6. {
  7.     MYSQL *ret; //定义MYSQL指针变量ret
  8.     MYSQL mysql; //定义mysql结构体
  9.     mysql_init(&mysql);//初始化mysql结构体
  10.     //连接数据库
  11.     ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
  12.     if(ret==NULL)
  13.     {
  14.         printf("Connect MySQL failed\n");
  15.         return 0;
  16.     }
  17.     printf("Connect MySQL success\n");
  18.     //执行SQL语句
  19.     /*组装SQL语句*/
  20.     char *sql_str="SELECT * FROM hum ORDER BY data DESC LIMIT 1";//查询数据,安装时间降序排列,取第一条数据
  21.     if(mysql_query(&mysql,sql_str))
  22.     {
  23.         printf("SQL execute failed:%s\n",mysql_error(&mysql));
  24.         return 0;
  25.     }
  26.         printf("SQL execute success\n");
  27.     //储存查询结果
  28.     MYSQL_RES *result=mysql_store_result(&mysql);
  29.     if(result==NULL)
  30.     {
  31.         printf("SQL result failed:%s\n",mysql_error(&mysql));
  32.         return 0;
  33.     }
  34.     printf("SQL result success\n");
  35.     //输出查询结果
  36.     MYSQL_ROW row;
  37.     row=mysql_fetch_row(result);
  38.     if(row==NULL)
  39.     {
  40.         printf("SQL fetch failed:%s\n",mysql_error(&mysql));
  41.         return 0;
  42.     }
  43.     else
  44.     {
  45.         printf("humidity value :%d,date :%s\n",row[0],row[1]);
  46.     }
  47.     //释放查询结果
  48.     mysql_free_result(result);
  49.    
  50.     //关闭连接
  51.     mysql_close(&mysql);
  52.     return 0;
  53. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表