使用 DDL 语句分别创建仓库表、供应商表、产品表和入库表,并对其进行操作
查看本章节
查看作业目录
需求说明:
- 使用 DDL 语句分别创建仓库表、供应商表、产品表和入库表
- 使用 DML 语句分别新增一条仓库表、供应商表、产品表和入库表记录
- 使用 DML 语句更新满足指定条件的产品进货单价
- 删除一条供应商记录(例如“丁供应商”)
实现思路:
- 入库表中字段仓库名(dName)、供应商名(pName)和产品编号(goodsID)分别参照仓库表、供应商表和产品表
- 新增一条产品记录的 DML 语句
- 以下 DML 语句将创维公司产品的进货单价打 95 折
- 删除供应商数据需要特别注意删除主表数据所引发的删除异常问题。由于供应商数据被入库表记录所引用,因此需要首先将入库表中引用了欲删除供应商的那些入库记录的供应商信息置为 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
-- ----------------------------
使用 DDL 语句分别创建仓库表、供应商表、产品表和入库表,并对其进行操作的更多相关文章
- 抓取oracle建表语句及获取建表ddl语句
抓取oracle建表语句及获取建表ddl语句 1.抓取代码如下: 1.1.产生表的语法资料 DECLARE-- v_notPartTable VARCHAR2(1000):= '&2'; -- ...
- MySQL之使用DDL语句创建表
一.使用DDL语句创建表 DDL语言全面数据定义语言(Data Define Language) 主要的DDL动词: CREATE(创建).DROP(删除).ALTER(修改) TRUNCATE(截断 ...
- MySQL使用DDL语句创建表
一.使用DDL语句创建表 DDL语言全面数据定义语言(Data Define Language) 主要的DDL动词: CREATE(创建).DROP(删除).ALTER(修改) TRUNCATE(截断 ...
- MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别
DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...
- oracle之 获取建表ddl语句
第一种方法是使用工具,如:pl/sql developer,在[工具]--[导出用户对象]出现就可以得到建表脚本. 第二种方法是,sql语句. DBMS_METADATA.GET_DDL包可以得到数据 ...
- oracle 之 cursor:创建存储过程批量执行DDL语句
说明:使用此过程可任意执行批量DDL语句,调用DDL查询语句时,注意转义字符,使用 ' 转义! 需求:批量删除以CUR_TEST开头的表,且有日志记录. 环境准备:建几张以CUR_TEST开头测试表. ...
- Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性
早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...
- mysql系统表加trigger和对特定的库禁用 DDL 语句
给 mysql 系统表加上 trigger 1 Reply 默认情况下,mysql 是不能给系统表,例如 mysql.user 加上触发器的.会提示 ERROR 1465 (HY000): Trigg ...
- 2013年10月13日学习:SQL通过命令语句来创建表
优点:操作简单,不容易出错,易于调试 缺点:需要记住命令.命令多了就容易混淆,是吧!但是熟悉了时间长了就OK了! step 1. 新建数据库,命名为Test 点击图形化界面中的新建查询,此时就可以输入 ...
随机推荐
- 时光网内地影视票房Top100爬取
为了和艺恩网的数据作比较,让结果更精确,在昨天又写了一个时光网信息的爬取,这次的难度比艺恩网的大不少,话不多说,先放代码 # -*- coding:utf-8 -*-from __future__ i ...
- Android 基础UI组件(一)
1.Toast //显示文字 Toast.makeText(this,"Toast显示文本",Toast.LENGTH_SHORT).show(); //显示图片 Toast to ...
- 图书管理系统总结——JAVA Swing控件简介
断断续续学习JAVA语言,写了一个多月数据库大作业,终于在五一过后写完了.由于第一次使用JAVA和数据库,遇到了许多问题,记录下来,以备以后查看. 我使用的JAVA SE,说实话,在开发后期,觉得JA ...
- Spring实现类私有方法测试通用方案
现实的业务场景中,可能需要对Spring的实现类的私有方法进行测试. 场景描述: 比如XXXService里有 两个函数a.函数b. 而实现类XXXServiceImpl中实现了函数a.函数b,还包含 ...
- IDE常用插件
IDE 常用插件集合 :
- Redis图形管理 redis-browser
目录 一.介绍 二.部署 三.启动 监听单台 听多台 四.报错合集 一.介绍 redis-browser是redis的web端图形化管理工具.利用它可以查看和管理redis的数据,界面简洁,能和ral ...
- shell脚本 比较mysql配置文件
一.简介 源码地址 日期:2019/12/19 介绍:较两个mysql实例的配置是否一致,支持比较配置文件,也支持比较系统变量的值 效果图: 二.使用 适用:centos6+ 语言:中文 注意:无 下 ...
- 解决pwn题目加载指定libc版本的问题
因为本地和远程的libc版本不同,pwn题目调试起来会有影响,所以来记录一下用patchelf和glibc-all-in-one来解决这个问题过程. 下载工具 下载patchelfgit clone ...
- [BUUCTF]PWN——[BJDCTF 2nd]r2t4
[BJDCTF 2nd]r2t4 附件 步骤 例行检查,64位,开启了canary和nx 64位ida载入,检索字符串的时候发现了后面函数,shell_addr=0x400626 main函数 可以溢 ...
- 2. Go中defer使用注意事项
1. 简介 defer 会在当前函数返回前执行传入的函数,它会经常被用于关闭文件描述符.关闭数据库连接以及解锁资源. 理解这句话主要在三个方面: 当前函数 返回前执行,当然函数可能没有返回值 传入的函 ...