首页 > MySQL更新命令_UPDATE

MySQL更新命令_UPDATE

创建测试表

mysql> CREATE TABLE `product` (->    `proID` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品表主键',->    `price` decimal(10,2) NOT NULL COMMENT '商品价格',->    `type` int(11) NOT NULL COMMENT '商品类别(0生鲜,1食品,2生活)',->    `dtime` datetime NOT NULL COMMENT '创建时间',->    PRIMARY KEY (`proID`)->  ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='商品表';
Query OK, 0 rows affected (0.11 sec)mysql> CREATE TABLE `producttype` (->    `ID` int(11) NOT NULL COMMENT '商品类别(0生鲜,1食品,2生活)',->    `amount` int(11)  COMMENT '每种类别商品总金额',->    UNIQUE KEY (`ID`)->  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品类别资金汇总表'-> ;
Query OK, 0 rows affected (0.12 sec)

 mysql> INSERT INTO product(price,type,dtime) VALUES(10.00,0,now()),(10.00,1,now()),(10.00,1,now()),(20.00,2,now()),(30.00,3,now());

 Query OK, 5 rows affected (0.06 sec)

 Records: 5 Duplicates: 0 Warnings: 0

 mysql> INSERT INTO producttype(ID) VALUES(1),(2),(3);

 Query OK, 3 rows affected (0.04 sec)

 Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from product;
+-------+-------+------+---------------------+
| proID | price | type | dtime               |
+-------+-------+------+---------------------+
|     1 | 10.00 |    0 | 2018-01-31 03:06:05 |
|     2 | 10.00 |    1 | 2018-01-31 03:06:05 |
|     3 | 10.00 |    1 | 2018-01-31 03:06:05 |
|     4 | 20.00 |    2 | 2018-01-31 03:06:05 |
|     5 | 30.00 |    3 | 2018-01-31 03:06:05 |
+-------+-------+------+---------------------+
5 rows in set (0.00 sec)mysql> select * from producttype;
+----+--------+
| ID | amount |
+----+--------+
|  1 |   NULL |
|  2 |   NULL |
|  3 |   NULL |
+----+--------+
3 rows in set (0.00 sec)

 

1. 单表更新

UPDATE用法:update 表名 set  属性1=value1,属性2=value2 where 限定条件

示例:

mysql> UPDATE product-> SET price='20.00',type=0 -> WHERE proID=2;
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from product;
+-------+-------+------+---------------------+
| proID | price | type | dtime               |
+-------+-------+------+---------------------+
|     1 | 10.00 |    0 | 2018-01-31 03:06:05 |
|     2 | 20.00 |    0 | 2018-01-31 03:06:05 |
|     3 | 10.00 |    1 | 2018-01-31 03:06:05 |
|     4 | 20.00 |    2 | 2018-01-31 03:06:05 |
|     5 | 30.00 |    3 | 2018-01-31 03:06:05 |
+-------+-------+------+---------------------+
5 rows in set (0.00 sec)

 

2. 关联更新

UPDATE用法:update 表名1,表名2 set  表1.属性=表2.属性值 where 限定条件

示例:

mysql> UPDATE producttype,product-> SET producttype.amount=product.price-> where product.TYPE = producttype.ID AND product.TYPE=1;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from producttype;
+----+--------+
| ID | amount |
+----+--------+
|  1 |     10 |
|  2 |   NULL |
|  3 |   NULL |
+----+--------+
3 rows in set (0.00 sec)

 

3. 限制更新

UPDATE用法:update 表名1,表名2 set  表1.属性=表2.属性值 where 限定条件 limit  m

说明:只支持更新前多少行,而不支持非TOP的指定范围更新,也就是说,limit只接收一个参数。

意义:更新前m个符合where条件的记录。

mysql> UPDATE tb_name SET column_name='test' LIMIT 30;

 

4. 排序更新

UPDATE用法:update 表名1,表名2 set  表1.属性=表2.属性值 where 限定条件 order by ... [limit m]

说明:同限制更新一样,首先判断出符合where条件的记录,然后对符合条件的记录进行排序,最后对排序后的前m条记录做更新

mysql> UPDATE tb_name SET column_name='test' ORDER BY id ASC LIMIT 30;

 

5. 联合更新

UPDATE用法:update 表A set  A.属性=表B.属性值 FROM a as A [inner join | right join | left join] b as B on [连接条件] where 限定条件

mysql> UPDATE Table_A-> SET Table_A.col1 = Table_B.col1,    ->  Table_A.col2 = Table_B.col2-> FROM Some_Table AS Table_A    -> INNER JOIN Other_Table AS Table_B ON Table_A.id = Table_B.id-> WHERE Table_A.col3 = 'cool';

 

mysql> update a  join b on a.id=b.id set a.name=b.name where a.year=2016;

 

转载于:https://www.cnblogs.com/yy20141204bb/p/8394448.html

更多相关:

  • 一.通过Keepalived搭建MySQL双主模式的高可用集群系统1.MySQL Replication介绍:MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一台MySQL服务器(称为Slave)从另一台MySQL服务器(称为Master)上复制日志,然后解析日志并应用到自身的过程。MySQL Re...

  • 1、打开https://oneinstack.com/auto/选择Stack:LNMTY → ×安装Nginx → √安装JAVA:Tomcat7.0、JDK1.7 → √安装数据库MySQL5.7、DB密码root、DB安装方式二进制安装 → √Pure-FTPd √redis √memcached ×hhvm √iptables...

  • 注意:由于流程太过于繁杂,且坑多,这里只保留关键步骤,具体小问题百度! ________________________ 先进入CentOS6.8图形化界面(如阿里云没有默认的图形化界面,自己去安装https://blog.csdn.net/fenglixiong123/article/details/71138017) 【步骤...

  • 为了简单省事,我在CentOS 6.3上直接使用yum方法来安装MySQL,安装很顺利,但是我发现root用户登录不了。 下面是参考网上的资料并实操后的笔记整理 yum -y install mysql-server service mysqld start 安装过程中没有任何提示,也不知道root的密码设置的是多少。我打算从...

  • 破解MySQL密码 一、MySQL5.7.5之前 只要有系统root密码就可以破解: [root@host-131 ~]# vim /etc/my.cnf               //在配置文件中加入如下内容 [mysqld] skip-grant-tables[root@host-131 ~]# systemctl resta...

  • Spec: TS36.211 - Table 5.7.1-2...

  • 阿里云介绍: 1. 下载安装包。作为阿里主要的数据传输工具Datax,阿里已经完全开源到github上面了。下载地址(https://github.com/alibaba/DataX)。 2. 安装环境: JDK(1.6以上,推荐1.6)Python(推荐Python2.6.X)Apache Maven 3.x (Compile D...

  • xmlns xml namespaces 参考 http://www.w3school.com.cn/tags/tag_prop_xmlns.asp http://www.w3school.com.cn/xml/xml_namespaces.asp

    这是一行
  • 1.创建数据库:create database database-name 2.删除数据库:delete database database-name 3.选择:select * from table where ... 4.插入:insert into table(field1,field2) values(value1,value...

  • 文档树Document Object Model (DOM) 为文档对象模型, 它使用对象的表示方式来表示对应的文档结构及其中的内容。下面为一个样例 p 元素在文档中的对象所包含的所有属性。控制台:p#domaccessKey: ""align: ""assignedSlot: nullattributeStyleMap: Style...

  • 1、封装 什么是封装?   1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口     注意:封装有隐藏的意思,但不是单纯的隐藏     学习封装的目的:就是为了能够限制外界对内部数据的访问   python中属性的权限分为两种:   1.公开的     没有任何限制,谁都可以访问   2.私有的     只有当前类本身能狗...

  • jquery:js框架; 主要区别在dom的操作 jq需要引入文件并且引入顺序在最上面; 找元素 操作元素 js:doucument.getElementById..classname,tagname,name jq:$(选择器) dom是js对象 jqDom是jquery对象 操作内容 js:dom.innerHTML(非表单元素)...

  • Mock.js 的语法规范包括两部分: 数据模板定义规范(Data Template Definition,DTD)数据占位符定义规范(Data Placeholder Definition,DPD)1.数据模板定义规范 DTD 数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值: // 属性名 name // 生...

  • vue   vue.js 是用于构建交互式的 Web 界面的库。它提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。从技术上讲, Vue.js 集中在 MVVM 模式上的视图模型层,并通过双向数据绑定连接视图和模型。实际的 DOM 操作和输出格式被抽象出来成指令和过滤器。相比其它的 MVVM 框架,Vue.j...