SQL基础教程(第2版)第4章 数据更新:练习题
Posted 绍耕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础教程(第2版)第4章 数据更新:练习题相关的知识,希望对你有一定的参考价值。
1 行也选取不出来。 >> 解答 A 先生使用 BEGIN TRANSACTION 启动了事务处理,然后开始执行 INSERT 语句。因此,在 A 先生使用 COMMIT 确定该更新之前, B 先生等其他用户都无法看 到 A 先生进行更新的结果。这就是基于 ACID 特性中的 I,也就是独立性(Isolation) 的现象。当然,由于 A 先生在 COMMIT 之前能看到自己进行过的更新,因此如果 A 先生执行 SELECT * FROM Product; 的话,会得到 3 条记录。 顺便提一下,如果想要确认该现象,并不需要两个人。只需使用电脑打开两个窗 口连接同一个数据库,一个人就能完成两个人的工作了。
因为商品编号列违反了主键约束,所以会发生错误, 1 行也插入不了。 >> 解答 如果该 INSERT 能够正常执行的话, Product(商品)表的状态应该会像下面 这样变为 6 行数据。 但是,显然上述记录违反了商品编号列的主键约束(不能存在主键重复的记录)。 违反该约束带来的后果就是无法执行更新操作,这就是 ACID 特性中的 C—— 一致 性(Consistency)。
/* 下面是问题中的SELECT语句 */ -- 商品利润表 CREATE TABLE ProductMargin (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, sale_price INTEGER, purchase_price INTEGER, margin INTEGER, PRIMARY KEY(product_id)); /* 下面是解答示例 */ -- 将Product表中的数据插入到ProductMargin表中 INSERT INTO ProductMargin (product_id, product_name, sale_price, purchase_price, margin) SELECT product_id, product_name, sale_price, purchase_price, sale_price - purchase_price FROM Product; -- 确认插入数据 SELECT * FROM ProductMargin;
-- 1.下调销售单价 UPDATE ProductMargin SET sale_price = 3000 WHERE product_id = \'0003\'; -- 2.利润再计算 UPDATE ProductMargin SET margin = sale_price - purchase_price WHERE product_id = \'0003\'; -- 确认数据更新 SELECT * FROM ProductMargin;
以上是关于SQL基础教程(第2版)第4章 数据更新:练习题的主要内容,如果未能解决你的问题,请参考以下文章
SQL基础教程(第2版)第4章 数据更新:4-3 数据的更新(UPDATE)