当前位置:首页|资讯

单元4 数据操作 4-2 数据修改

作者:老徐的CS自留地发布时间:2024-10-04

实验名称

数据修改

实验类型

验证性/设计性

日期


实验目的




实验内容和步骤

实验环节4,以数据操作(即数据插入,数据修改和数据删除为主要内容),相对于第三单元(数据定义)来说,较为简单;其是在第三单元的基础之上的工作。因此,这里是假设第三单元的数据库和表均已创建成功!

希望大家能够知悉!

0 实验预备

因为,数据插入实验刚刚完成,所以这里的实验预备可以不用做啦,已经有了bookstore数据库和book表啦!

直接进入第一步!

(1)创建bookstore数据库,先看一下有没有该数据库

show databases;

若没有bookstore数据库,那就创建吧!

create database bookstore;

再show一下,看创建是否成功哦!

use bookstore;

然后,开始创建表啦!这里,依据教材,先创建一个book表吧!

CREATE TABLE  book (    图书编号  char(10)   NOT NULL  PRIMARY KEY,    图书类别  varchar(20)   NOT NULL  DEFAULT  '计算机',    书名       varchar(40)   NOT  NULL ,    作者       char(10)     NOT  NULL ,    出版社     varchar(20)   NOT  NULL ,    出版时间   date           NOT  NULL ,    单价      float(5,2)       NOT  NULL ,    数量      int(5),      折扣      float(3,2) ,      封面图片  blob ) ENGINE=InnoDB;

此时,你可以查看一下,看book表是否创建成功;若成功,则预备工作完成!

1 单表数据修改

先看看现有的数据情况吧!

select * from book;

因为是新创建的表,那就无法看到下图,如何办呢?想一下我们刚刚学过的insert into 语句,按照下面的数据,写insert语句,完成数据插入工作,再执行上面的语句,直至看到下表的数据。

接下来

【例4-5】 将bookstore表中,所有书的数量都增加100本!

UPDATE book    SET 数量 = 数量+100;

再查询出来,看看是否修改成功了呢?


那继续修改,带条件的修改!

比如:一看,《乌合之众》这本书的作者写错了呀,应该 “古斯塔夫·勒庞”,那咋办呢?

修改呀

UPDATE book    SET 作者 ='古斯塔夫·勒庞'          WHERE 书名 = '乌合之众';


2 多表数据修改

多表数据修改,那至少得多表吧!但是目前为止,只有一个book表!咋办?再创建一个sell表吧!

CREATE TABLE sell  (  订单号 int(0) NOT NULL AUTO_INCREMENT,  用户号 char(18)  NOT NULL,  图书编号 char(20) NOT NULL,  订购册数 int(0) NOT NULL,  订购单价 float(5, 2) NOT NULL,  订购时间 datetime(0) NOT NULL,  是否发货 varchar(10) NULL,  是否收货 varchar(10) NULL,  是否结清 varchar(10) DEFAULT NULL,  PRIMARY KEY (`订单号`) ) ENGINE = InnoDB;

我们练习修改数据,但是,这是空表,那就想办法插入一些数据吧,这个咱刚学过,肯定会!

INSERT INTO sell VALUES (1, 'C0132', 'TP.9501', 13, 20.00, '2020-11-14 12:13:49', '已发货', NULL, NULL); INSERT INTO sell VALUES (2, 'D1963', 'TP.9501', 3, 31.50, '2020-11-21 12:25:12', '已发货', NULL, NULL); INSERT INTO sell VALUES (3, 'D1963', 'TP.9501', 6, 23.45, '2020-03-26 12:25:23', '已发货', '已收货', NULL); INSERT INTO sell VALUES (4, 'C0138', 'TP.9502', 10, 23.50, '2020-08-01 12:13:49', '已发货', '已收货', '已结清'); INSERT INTO sell VALUES (5, 'C0138', 'TP.9504', 133, 33.50, '2020-08-01 12:13:49', NULL, NULL, NULL); INSERT INTO sell VALUES (6, 'A3013', 'TP.9503', 4, 89.00, '2020-08-20 00:00:00', NULL, NULL, NULL); INSERT INTO sell VALUES (7, 'C0138', 'TP.9504', 43, 30.00, '2020-11-08 12:13:49', '已发货', NULL, NULL); INSERT INTO sell VALUES (8, 'C0138', 'TP.9502', 5, 45.50, '2020-11-21 00:00:00', NULL, NULL, NULL); INSERT INTO sell VALUES (9, 'C0132', 'TP.9503', 6, 23.00, '2020-11-28 18:23:35', '已发货', '已收货', NULL);

插入了9条数据呀!尤其是图书编号,必须出现在book表中呀,要不然没法实验!

看一下

万事俱备,只欠东风啦!

【例子4-6】多表修改!对订单号为6的客户,退会2本书,请在sell表中修改订购数,当图书退回后,在book表中,该书的数量增加2。

为了方便看效果,我也先把book书的结果先显示看一下!

那先人工算一下,订单号6,对应的图书编号为 TP.9503,book表中该编号的书还有300本!

那开始多表修改吧!

UPDATE  sell,book    SET  sell.订购册数=订购册数-2 , book.数量=数量+2        WHERE sell.图书编号=book.图书编号 and sell.订单号='6';

看一下,修改成功了没有吧?看,最后一行,Changed 为2行,说明修改成功啦!

那看一下数据变化了没有呢?

有没有同学发现一个问题,sell.订单号='6';

订单号为int型,按说写成sell.订单号=6;才对!为啥写成上述的带引号的6,也可以执行呢?

UPDATE  sell,book    SET  sell.订购册数=订购册数-2 , book.数量=数量+2        WHERE sell.图书编号=book.图书编号 and sell.订单号=6;

查看一下

说明,效果是一样的1

那为啥呢?为啥呢?为啥呢?

请把头发薅掉吧,薅光吧!啥原因呢!

观察一下!

思考思考思考吧!

做一个练习吧!

✍️练习:对订单号为6的客户,又想追加3本书,请在sell表中修改订购数,那在book表中,该书的数量应该相应地减少3本!

那如何写对应的代码呢?

至此,数据修改操作搞定!




Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1