1.创建表及记录用于测试
CREATE TABLE `product` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id',
`name` varchar(50) NOT NULL COMMENT '产品名称',
`original_price` decimal(5,2) unsigned NOT NULL COMMENT '原价',
`price` decimal(5,2) unsigned NOT NULL COMMENT '现价',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `product` (`id`, `name`, `original_price`, `price`) VALUES
(NULL, '雪糕', '5', '3.5'),
(NULL, '鲜花', '18', '15'),
(NULL, '甜点', '25', '12.5'),
(NULL, '玩具', '55', '45'),
(NULL, '钱包', '285', '195');
mysql> select * from product;
+----+--------+----------------+--------+
| id | name | original_price | price |
+----+--------+----------------+--------+
| 1 | 雪糕 | 5.00 | 3.50 |
| 2 | 鲜花 | 18.00 | 15.00 |
| 3 | 甜点 | 25.00 | 12.50 |
| 4 | 玩具 | 55.00 | 45.00 |
| 5 | 钱包 | 285.00 | 195.00 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)
2.互换original_price与price的值
新手可能会使用以下方法进行互换
update product set original_price=price,price=original_price;
1
但这样执行的结果只会使original_price与price的值都是price的值,因为update有顺序的,
先执行original_price=price , original_price的值已经更新为price,
然后执行price=original_price,这里相当于没有更新。
执行结果:
mysql> select * from product;
+----+--------+----------------+--------+
| id | name | original_price | price |
+----+--------+----------------+--------+
| 1 | 雪糕 | 5.00 | 3.50 |
| 2 | 鲜花 | 18.00 | 15.00 |
| 3 | 甜点 | 25.00 | 12.50 |
| 4 | 玩具 | 55.00 | 45.00 |
| 5 | 钱包 | 285.00 | 195.00 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)
mysql> update product set original_price=price,price=original_price;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> select * from product;
+----+--------+----------------+--------+
| id | name | original_price | price |
+----+--------+----------------+--------+
| 1 | 雪糕 | 3.50 | 3.50 |
| 2 | 鲜花 | 15.00 | 15.00 |
| 3 | 甜点 | 12.50 | 12.50 |
| 4 | 玩具 | 45.00 | 45.00 |
| 5 | 钱包 | 195.00 | 195.00 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)
正确的互换方法如下:
update product as a, product as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id;
1
执行结果:
mysql> select * from product;
+----+--------+----------------+--------+
| id | name | original_price | price |
+----+--------+----------------+--------+
| 1 | 雪糕 | 5.00 | 3.50 |
| 2 | 鲜花 | 18.00 | 15.00 |
| 3 | 甜点 | 25.00 | 12.50 |
| 4 | 玩具 | 55.00 | 45.00 |
| 5 | 钱包 | 285.00 | 195.00 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)
mysql> update product as a, product as b set a.original_price=b.price, a.price=b.original_price where a.id=b.id;
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> select * from product;
+----+--------+----------------+--------+
| id | name | original_price | price |
+----+--------+----------------+--------+
| 1 | 雪糕 | 3.50 | 5.00 |
| 2 | 鲜花 | 15.00 | 18.00 |
| 3 | 甜点 | 12.50 | 25.00 |
| 4 | 玩具 | 45.00 | 55.00 |
| 5 | 钱包 | 195.00 | 285.00 |
+----+--------+----------------+--------+
5 rows in set (0.00 sec)
where后面所加的条件必须要能唯一的确定要更改表的每一行,最好是者张表的的主键,格式为:a.primary key=b.primary key
zz:https://blog.csdn.net/fdipzone/article/details/50864196
相关推荐
本篇文章将详细探讨MySQL中利用存储过程读取和写入XML数据的两种方法,主要关注使用`ExtractValue`函数的性能表现。 1. **XML在MySQL中的基础** XML(Extensible Markup Language)是一种用于描述数据的语言,广泛...
在这个"spring-mybatis-mysql-json"项目中,我们探讨了如何在MySQL数据库中使用JSON列,同时结合了MyBatis持久层框架以及Spring和Struts2(SSH)的经典MVC架构。下面我们将详细解析这些关键知识点。 首先,MySQL的...
7. **XML支持**:MySQL 5.1 开始支持XML数据类型和XML函数,方便数据交换和处理。 8. **分区的视图**:视图可以应用于分区表,提供更高级别的抽象和数据访问控制。 这两个版本的MySQL都在安全性、性能和功能方面...
本项目"java-excel-mysql互倒代码"提供了一个实用的解决方案,利用了两个流行的Java库:jxl和Apache POI。 jxl是一个专门用于读写Microsoft Excel文件的Java库,而Apache POI是更广泛的支持Microsoft Office格式的...
总之,"php+mysql练习"这个项目对于初学者来说是一个很好的起点,通过实践可以加深对这两种技术的理解,同时也能锻炼解决问题和持续学习的能力。在学习过程中,不断尝试、调试和改进,逐步成长为一名熟练的Web开发者...
在IT领域,数据管理和处理是至关重要的任务,而Excel和MySQL是两个常用的数据管理工具。Excel是一款强大的电子表格软件,适合处理小型数据集,而MySQL则是一个高效的关系型数据库管理系统,适用于存储和处理大量结构...
MySQL软件提供两个版本:社区版和商业版。社区版是免费的开源版本,广泛适用于学习和开发;商业版则是在此基础上增加了技术支持和附加功能。 在安装和配置方面,MySQL的默认端口是3306,用户为root,而默认字符集...
4. **数据导入导出**:Navicat可以帮助用户将数据从各种格式(如CSV、XML、Excel等)导入到MySQL数据库,也可以将数据库数据导出为这些格式,便于数据交换和备份。 5. **数据同步和比较**:此功能允许用户比较两个...
右关联的语法类似,只是交换了 `LEFT JOIN` 和 `table1` 与 `table2` 的位置: ```sql SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column = table2.column; ``` 4. **全外连接(FULL ...
CSV是一种通用的数据交换格式,它以纯文本形式存储表格数据,每行代表一个记录,列之间用逗号分隔。这种格式易于阅读和编写,并且可以用各种程序打开,包括电子表格软件和数据库管理系统。 MySQL是一个流行的开源...
在数据库管理过程中,有时我们可能需要对表中的数据进行调整,比如互换两个列的值。这在实际业务场景中是非常常见的需求之一。本文将通过一个具体的MySQL示例来介绍如何在MySQL数据库中实现这一操作。 #### 创建...
5. **JDBC连接**: JDBC(Java Database Connectivity)是Java访问数据库的标准API,`mysql-connector-java-5.1.38.jar`是MySQL的JDBC驱动,它使得Hive可以通过JDBC接口与MySQL建立连接,实现数据交换。 6. **Hive与...
同时,MySQL提供了一系列函数,如`ST_GeomFromText`用于创建几何对象,`ST_Contains`用于判断一个几何对象是否包含另一个,以及`ST_Distance`用于计算两个几何对象之间的距离等,极大地丰富了对空间数据的操作能力。...
当需要交换两个自增列的值时,可以分三步进行: - 将值为较小的自增值设为一个临时值(如0)。 - 将值为较大的自增值设为较小的值。 - 最后,将临时值设为较大的值。 ```sql -- 假设表identity_datatable有...
4. 数据导入/导出:Navicat提供了数据迁移工具,可以从不同格式(如CSV、Excel、XML等)导入数据到MySQL,同时也支持将数据库数据导出为各种格式,方便数据交换。 5. 数据同步:Navicat的数据库同步功能可以比较并...
在IT行业中,PHP和MySQL是两个非常重要的工具,它们分别用于服务器端的脚本和数据库管理。当需要处理大量数据时,Excel文件由于其强大的表格管理和数据分析能力,常常被用作中间格式。本文将深入探讨如何使用PHP和...
JavaBin和MySQL是两种在IT领域中经常使用的工具,它们分别代表了数据序列化和数据库管理的重要方面。本文将深入探讨这两个技术以及如何在实际应用中结合使用它们,特别是涉及数据库连接、数据操作以及Java Bean数据...
- 交换分区是分区管理的重要操作,有助于数据的迁移和维护。 6. **教师评阅**: 教师可能对实验的完成度、理解和应用进行了评估,强调理论知识与实践操作相结合的重要性。 通过这次实验,不仅掌握了MySQL存储...