手把手教你开发项目子模块-01_数据库:MySQL批量插入两表相同字段!!!

本文讲述了在继承现有项目的基础上,如何对子模块进行数据库字段设计,包括理解需求、整体架构把握、子模块设计,以及在MySQL中处理批量插入和跨表关联的问题。作者通过实例展示了如何逐步完成子模块库存管理的数据库设计,并分享了遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

起因:开发新的子模块,从数据库抓起!

前言

  1. 从这篇博客开始记录如何在继承已有项目的基础上修改开发属于自己项目的一些思路,是记录也是督促,共勉!
  2. 以小见大,此文仅从子模块视角展开,希望能提供给您一些思路!
  3. 笔者才疏学浅,边改边总结,还是小白阶段,不足处请多指教!
  4. 如需看MySQL批量插入,建议目录直接跳到第四章节!!!!

前置条件

开发环境:IDEA 2018
数据库:MySQL 8.0
项目架构:SpringBoot+Vue+Hibernate

废话少说,开始!

一、了解需求

不破不立,已有项目的字段和前端显示不再适用新的项目要求,打破重组!
从数据库开整!
在这里插入图片描述
一问:在不了解实际项目子模块的开发流程下,如何设计子模块的数据库字段?
笔者思路:项目本来就是虚拟的环境下运行的,再考虑贴切也和真实环境有出入,所以对此不必太过纠结,主要去学习和了解整个开发的思路以及锻炼自己解决问题的能力!
二问:那如何设计子模块的字段?
笔者思路:先从项目整体出发,将整个项目模块化,这时候我用到的工具就是平板+手写笔,先复原以前项目的流程!

二、总体架构把握

例如图示,仅作参考!
在这里插入图片描述
因是手写,所以有点潦草!见谅~
这里仅介绍思路:
1、将总体项目拍下!
分析各个模块,然后去思考自己的模块应该怎么去设计,先将一个大的项目模块化,这样一步一步来,先想模块名称,模块设计,不会一下子感觉到那么大的心理负担,不积跬步无以至千里,一步步来!
2、关键是数据库!
不说一个子模块对应一个数据库,但是你必须找到这些模块对应的数据库表之间的关系,这样有助你了解整个项目的架构!
3、找出各数据库对应的表和字段!
必须承认这需要一定的耐心去解读代码和反复的抄写字段,但相信当这一步你最终完成后,你心里面对这个大项目的改造没那么慌啦,先把握架构!

三、子模块设计

如上所示,笔者现在需求是修改子模块库存管理,然后也已理清了该模块对应的数据库表和字段,下一步就是设计数据库表!
在自己没思路的前提下,不访问AI提供一些模块设计和字段思路!
在这里插入图片描述
因是介绍思路,所以具体字段不再赘述!
思路:
1、根据上文思路找到对应的数据库表
2、根据AI或者已有经验的字段思路对字段进行取舍
3、写出已有字段和设计修改新字段
在实施的过程中笔者面对新的难题,就是此表的字段和另一个表的字段相同,所以需要批量插入!

四、MySQL批量插入两表相同字段

 直接上代码!

通用版

INSERT INTO 目标表(字段1,字段2,***) 
	SELECT 字段1,字段2,*** 
	FROM 已有表
	WHERE 条件;

实例版

INSERT INTO app_car_parking_record(good_name,category_name) 
	SELECT good_name,category_name 
	FROM app_goods_details
	WHERE 1=1;	

如图所示,成功!
在这里插入图片描述

而后我想插入其他字段又产生了新的问题,表述就是(->表示包含关系)

合作单位->超市->分类->商品

问题描述:库存与商品表联系把商品名字与分类拿过来了,但是现在想用商品分类字段为条件把合作单位和超市从另一张表拿过来,继续用上面的方法报错了!
问题描述:明明库存表有category_name字段,但是一直报错显示1054!

在这里插入图片描述

去查了表结构!有此字段,期间也刷新了无数次,无论是表还是库!

在这里插入图片描述

还是报相同的错误!于是使用查询语句继续排错!
发现上述问题应该不是字段不存在,应该是指代不清

在这里插入图片描述

emmm…讲到这里很羞愧,虽说查询用了去重函数!
但是在批量插入的时候始终没找到合适的不报错的SQL语句插入!
笔者MySQL真的小白,评论区有大佬帮忙解答一下这种情况下的SQL语句到底该如何写!

在这里插入图片描述
但是有问题就有解决方法,大不了一行一行的填数据白,因笔者这个表中的数据真的不算多100以内,当然还是能偷懒就偷懒一点,倒也不必一行一行的对应找,这里笔者提供了折中(弱鸡版)的思路!
就是按照未查重的category_name分批次插入,哎嘿,菜鸟报道!
好心大佬欢迎评论,俺数据库真滴菜!

代码如下:

#一、插入
INSERT INTO app_car_parking_record(org_id,org_name,park_manage_id,park_manage_name) 
	SELECT org_id,org_name,park_manage_id,park_manage_name 
	FROM `app_car_manage` 
	WHERE app_car_manage.category_name='日用品类';
#二、找相应数据
SELECT good_name from app_car_parking_record where category_name='日用品类';
#三、统计数量
SELECT COUNT(good_name) from app_car_parking_record where category_name='日用品类';

在这里插入图片描述

找到对应字段!

在这里插入图片描述
分类插入!

在这里插入图片描述

以此类推!
统一执行,速度更快!

在这里插入图片描述

成功补全!

在这里插入图片描述

继而根据需求补全其他字段,完成表的初步设计!

在这里插入图片描述
至此子模块的数据库表的设计大概完成!
后续会持续更新,前后端如何实现渲染和正常的业务流程,点个关注不迷路!下期见!Bye~

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值