MySQL之改_update
MySQL增删改查之改_update
UPDATE语句
进行数据记录的更新。
1、更新单个表中的值
语法:
UPDATE [IGNORE] table_reference
SET col_name1=expr1 [, col_name2=expr2,],...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
①有where子句的,将满足WHERE条件的所有行的一个或多个列值改为新的值;
②没有WHERE子句,则会对该表中所有的记录的指定的列的所有行,进行修改更新操作。
基本格式:
update <表名> set <列名>=<值或值的表达式> where <条件表达式>;
例1:把95号球员的联盟会员号码改为2000(值)
UPDATE players
SET leagueno = 2000
WHERE playerno = 95;
例2: 把所有的罚款增加5%(值的表达式)
UPDATE penalties
SET amount = amount*1.05;
例3: 把住在Stratford的球员的获胜局数设为0(指定列所有行)
UPDATE matches
SET won = 0
WHERE playerno IN
(SELECT playerno FROM players WHERE town='Stratford');
注意:在SET子句的子查询中,不允许访问要更新的表。
UPDATE <表1>
SET amount = amount-(SELECT avg(amount) FROM 表1);
!!上述写法不允许
解决(分两步):
mysql> SET @avg_amount = (SELECT avg(amount) FROM <表1>);
mysql> UPDATE <表1>
SET amount = amount - @avg_amount;
UPDATE语句中的ORDER BY子句
UPDATE语句中可以使用ORDER BY子句,要求以排序的顺序来依次更新行。
在某些场景可能有用,例如:想要把所有罚款的罚款编号都加1
①如果从罚款编号为1的行开始更新,要么就会发生主键值重复异常;
②如果从罚款编号最大的行开始更新,就没有问题。
示例:把所有罚款的编号增加1
UPDATE penalties
SET paymentno = paymentno + 1
ORDER BY paymentno DESC;
UPDATE语句中的LIMIT子句
UPDATE语句中可以使用LIMIT子句,指定一次更新的行数
示例:把4个最高的罚款额增加5%(罚款额相同则更新编号小的球员)
UPDATE penalties
SET amount= amount *1.05
ORDER BY amount DESC, playerno ASC
LIMIT 4;
2、更新多个表中的值
优点:要么两个表都更新,要么两个表都不更新
语法:
UPDATE [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2,],...
[WHERE where_condition]
基本格式:
update <表名> set <列名1>=<值或值的表达式>, <列名2>=<值或值的表达式> ... where <条件表达式> ;
注意:
①table_references可以使用任何合法的连接语法
②不能使用ORDER BY和LIMIT子句
示例:把一个first分级球队的所有比赛的获胜局数设为0,并把first分级球队的队长编号改为112
UPDATE matches m,teams t
SET m.won = 0,t.playerno = 112
WHERE t.teamno = m.teamno
AND t.division = 'first';
解析:首先执行一个二表连接查询,从两个表中找到满足连接条件 t.teamno = m.teamno 的所有行,然后对这些行分别进行更新。
MySQL之改_update的更多相关文章
- MySQL数据库改名字
在这里首先感谢那个网上已经给出了解决办法的同志 有很多MySQL数据库的初学者可能都会遇到一个关于改名字的问题,可能大家第一时间就会想到去网上搜搜,其实我跟大家的心理是一样的(呵呵). 据我所知,My ...
- python mysql增加改查
#python mysql增加改查,方便日后copy/paste .......... 1 #encoding: UTF-8 2 import pymysql 3 # # 打开数据库连接 4 db = ...
- 将现有MySQL数据库改为大小写不敏感
用过MySQL的应该都会注意到,默认情况下,Linux下安装的MySQL是大小写敏感的,也就是说Table1和table1可以同时存在.而Windows下的MySQL却是大小写不敏感的,所有表名和数据 ...
- mysql utf8改utf8mb4
由于需要用到utf8mb4,之前是utf8现在给改成utf8mb4 查看当前环境 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' ...
- MySQL更新命令_UPDATE
创建测试表 mysql> CREATE TABLE `product` ( -> `proID` ) NOT NULL AUTO_INCREMENT COMMENT '商品表主键', -& ...
- MySQL Replication--修改主键为NULL导致的异常
测试环境:MySQL 5.5.14/MySQL 5.6.36 测试脚本: create table tb001(id int primary key,c1 int); alter table tb00 ...
- 【备份】使用mysqldump 实现rename database name(mysql数据库改名称)
需求:将jxl_credit改名为jxl_test;输入:jxl_credit输出: jxl_test; 实现方式:1).新建jxl_test,2).备份jxl_credit到本地,3).然后将备份数 ...
- mysql查改
1 MySQL UNION 操作符语法格式: SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditio ...
- mysql在线改表结构 pt-online-schema-change
https://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html 不锁表更改数据库表结构 pt-online-s ...
随机推荐
- 百度地图API新手入门
最近,共享单车着实火了一把,市场竞争也是异常的激烈,百花争艳,百家争鸣,群雄逐鹿,最后鹿死谁手,现在还不得而知,不过可以肯定的是细节决定成败,更重要的还在于用户的体验. 用过的同学们都会知道,打开共享 ...
- 唐伯猫的 sql server 2008 的安装和操作记录
在服务器win 2008 server r2 上安装sql 首先下载sql server 2008 ,云盘有存储sql,很多论坛也有下载SQLEXPRADV_x64_CHS.exe 双击sql s ...
- 多线程爬坑之路-ThreadLocal源码及原理的深入分析
ThreadLocal<T>类:以空间换时间提供一种多线程更快捷访问变量的方式.这种方式不存在竞争,所以也不存在并发的安全性问题. This class provides thread-l ...
- tomcat升级,tomcat窗体改名,一台电脑安装多版本JDK
1 tomcat改名:在bin目录下找到次文件(如图),按图上指示修改(比如我窗体是主数据) 修改后: 2 一台电脑安装多个版本的JDK 为什么我们要安装多个版本JDK?--我是因为tomcat修复漏 ...
- Struts2之OGNL表达式
OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lam ...
- Linux下快速搭建php开发环境
php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...
- jquery-scrollstop
$(window) .on("scrollstart", function() { // Paint the world yellow when scrolling starts. ...
- iOS中书写代码规范35条小建议
1.精简代码, 返回最后一句的值,这个方法有一个优点,所有的变量都在代码块中,也就是只在代码块的区域中有效,这意味着可以减少对其他作用域的命名污染.但缺点是可读性比较差 NSURL *url = ({ ...
- 手机自动化测试:appium源码分析之bootstrap一
手机自动化测试:appium源码分析之bootstrap一 前言: poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.popte ...
- 老李分享:网页爬虫java实现
老李分享:网页爬虫java实现 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...