代码编织梦想

查看本章节

查看作业目录


需求说明:

  • 使用 DDL 语句分别创建仓库表、供应商表、产品表和入库表
  • 使用 DML 语句分别新增一条仓库表、供应商表、产品表和入库表记录
  • 使用 DML 语句更新满足指定条件的产品进货单价
  • 删除一条供应商记录(例如“丁供应商”)

实现思路:

  1. 入库表中字段仓库名(dName)、供应商名(pName)和产品编号(goodsID)分别参照仓库表、供应商表和产品表
  2. 新增一条产品记录的 DML 语句
  3. 以下 DML 语句将创维公司产品的进货单价打 95 折
  4. 删除供应商数据需要特别注意删除主表数据所引发的删除异常问题。由于供应商数据被入库表记录所引用,因此需要首先将入库表中引用了欲删除供应商的那些入库记录的供应商信息置为 null,然后再删除这个供应商

实现代码:

入库表中字段仓库名(dName)、供应商名(pName)和产品编号(goodsID)分别参照仓库表、供应商表和产品表

CREATE TABLE instock(
	serialNo INT PRIMARY KEY auto_increment,
	FOREIGN KEY(dName) REFERENCES depot(dName) -- 参照仓库表主键
	FOREIGN KEY(pName) REFERENCES provider(pName) -- 参照供应商表主键
	FOREIGN KEY(goodsID) REFERENCES goods(goodsID) -- 参照产品表主键
	inNum INT,
	inTime time
)

新增一条产品记录的 DML 语句

INSERT INTO goods VALUES('A1001','创维 55M6','2999');

以下 DML 语句将创维公司产品的进货单价打 95 折

UPDATE goods SET unitPrice=unitPrice*0.95 WHERE gName LIKE '%创维%'

删除供应商数据需要特别注意删除主表数据所引发的删除异常问题。由于供应商数据被入库表记录所引用,因此需要首先将入库表中引用了欲删除供应商的那些入库记录的供应商信息置为 null,然后再删除这个供应商

UPDATE instock SET pName=null WHERE pName='丁供货商'
DELETE FROM provider WHERE pName='丁供货商'

数据库:


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for depot
-- ----------------------------
DROP TABLE IF EXISTS `depot`;
CREATE TABLE `depot` (
  `dName` varchar(255) NOT NULL DEFAULT '',
  `tel` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`dName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of depot
-- ----------------------------

-- ----------------------------
-- Table structure for goods
-- ----------------------------
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
  `goodsID` varchar(255) NOT NULL,
  `gName` varchar(255) DEFAULT NULL,
  `unitPrice` decimal(10,2) DEFAULT NULL,
  `category` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`goodsID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of goods
-- ----------------------------

-- ----------------------------
-- Table structure for instock
-- ----------------------------
DROP TABLE IF EXISTS `instock`;
CREATE TABLE `instock` (
  `serialNo` int(11) NOT NULL AUTO_INCREMENT,
  `dName` varchar(255) DEFAULT NULL,
  `pName` varchar(255) DEFAULT NULL,
  `goodsID` int(255) DEFAULT NULL,
  `inNum` int(255) DEFAULT NULL,
  `inTime` datetime DEFAULT NULL,
  PRIMARY KEY (`serialNo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of instock
-- ----------------------------

-- ----------------------------
-- Table structure for provider
-- ----------------------------
DROP TABLE IF EXISTS `provider`;
CREATE TABLE `provider` (
  `pName` varchar(255) NOT NULL,
  `contact` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`pName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of provider
-- ----------------------------

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_44893902/article/details/111089106

Linux搭建开发环境-爱代码爱编程

Linux搭建开发环境 文章目录 Linux搭建开发环境一、安装 Java二、安装MySQL1、配置YUM源2、安装MySQL3、启动MySQL服务4、开机启动5、修改root本地登录密码6、添加远程登录用户7、配置默认编码为utf8三、安装Tomcat1、准备2、启动 tomcat3、开放腾讯云端口4、重启tomcat5、解决tomcat7启动

解决Cent OS 6.5 中yum源错误:YumRepo Error: All mirror URLs are not using ftp, http[s] or file和404-爱代码爱编程

在Linux系统安装MySQL的时候,想要移除系统自带的mysql版本,使用 yum -y remove mysql-libs.x86_64 命令进行移除时报以下错误: YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/

为什么PageHelper能实现分页?-爱代码爱编程

今天处理分页查询时,报PersistenceException。查看控制台发现,sql中没有获取到分页参数,而且多了一个用来查询总数queryUpfile_Count方法。 反复确认了传参无问题后,最后查看xml发现sql语句有拼接limit #{pageNo}, #{pageSize}。这时候我就想,原有项目中使用PageHelper做分页,是不是凭

Spring-MVC 踩坑 这个问题困扰了3、4天-爱代码爱编程

注入bean失败问题去网上搜索了好几天,然后什么原因都有,没有一个能解决我的问题,配置文件也配置好久,一直修改配置文件改来该去一直没有改出来,最后发现我少了一个包spring-jdbc,添加之后修改成功。 [ERROR] Failed startup of context org.mortbay.jetty.plugin.Jetty6PluginWe

Mysq数据量不大查询速度却很慢,记录一次left join查询优化-爱代码爱编程

背景 趁着周末闲来无事,想起来之前看过的SQL优化,试一试效果。 效果 为了提现查询慢,所以...无视这烂SQL吧。 优化前 优化前效果 可以清楚的看到上面短短5W余条数据,居然要一分钟,这能忍? 优化后 优化后效果 神奇吧,这就是用好索引的效果,同样一条烂SQL,效果千差万别。   看完了效

mysql索引-爱代码爱编程

mysql索引为了解决什么问题 帮助我们更快的解决排好序的数据结构 索引的分类 1.二叉树 2.红黑树 3.b树 4b+树 二叉树 顾名思义,树的每个节点最多有两个子节点,他又可以分为满二叉树和完全二叉树 1.1满二叉树这就是一个满二叉树,所有非子叶节点都存在左右两个子叶,并且所有叶子节点都在同一层级上 1.2完全二叉树1.保证所有节点的树有同

mysql常规使用(建立,增删改查,视图索引)-爱代码爱编程

目录 1.数据库建立 2.增删改查 3.视图建立: 1.数据库建立 mysql> mysql> show databases; +-----------------------------------+ | Database | +-----------------------------

数据库SQL语言在MySQL中运用子查询结果插入数据-爱代码爱编程

子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,也可以嵌套在INSERT语句中用以生成要插入的批量数据插入子查询结果的INSERT语句格式为: # 插入子查询结果 INSERT INTO <表名> [(<属性列1>[,<属性列2>...]) 子查询; 举例: 对每一个班级求学生的平均年龄,并把结果存入数

Python连接mysql -爱代码爱编程

连接本地安装的mysql的时候, 创建连接engine的固定写法: from sqlalchemy import create_engine def engines(): """建立连接并返回数据库的引擎 """ host = 'localHost' db = 'practice' # 数据库名 user = 'zn

Mysq数据量不大查询速度却很慢,记录一次left join查询优化-爱代码爱编程

背景 趁着周末闲来无事,想起来之前看过的SQL优化,试一试效果。 效果 为了提现查询慢,所以...无视这烂SQL吧。 优化前 优化前效果 可以清楚的看到上面短短5W余条数据,居然要一分钟,这能忍? 优化后 优化后效果 神奇吧,这就是用好索引的效果,同样一条烂SQL,效果千差万别。   看完了效

使用 DML语句针对仓库管理信息系统,进行查询操作-爱代码爱编程

查看本章节 查看作业目录 需求说明: 查询所有电视机产品的基本信息,要求显示产品编号、产品名和进货单价查询所有产品的基本信息,要求按类型升序、价格降序显示查询信息显示所有不重复的产品类型显示进货单价最高的第 3 ~ 6 名的产品信息显示产品编号中含有“DK”字样的所有产品信息,按类型和产品编号进行排序显示实现代码: 查询所有电视机产品的基本信息,要

一学就会的SQL Server中英文版安装-爱代码爱编程

SQL Server 数据库的安装方法 SQL Server 安装前准备 只有硬件与软件安装环境达到要求,才能保障安装的顺利完成,以2016英文版为例,2016以后版本安装方法是一样的! SQL Server安装方法 英文版界面 如下图 中文界面 如下图 第一步 通过对比发现,选择左边第二项是“安装”,接下来点选右面第一项“安装一个全新的