1 update语句介绍

update语句用来修改表中的数据内容

Single-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count] Multiple-table syntax: UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]

update语句的常规用法

update students set sname='abcd',gender='1' where sid=1;
update student,students set students.sname=student2.sname,students.gender=students2.gender where students.sid=students2.sid;
  • 单表修改是指修改指定单个表中的已经存在数据的一个或多个列的数据;set短语后面跟要修改的列和值
  • where子句表示限定要修改表中的哪些行数据,如果没有where子句则表示所有行都要修改;order by子句表示update数据按照指定的顺序进行;limit子句表示限定修改数据的行数
  • 多表修改是指修改table_references指定的多个表中满足条件的行数据,多表修改不允许使用order by和limit子句
  • 执行update语句需要修改表的权限
  • low_priority关键词表示修改语句需要等待其他链接的读此表操作结束后再执行,之作用在MylSAM,MEMORY,MERGE存储引擎
  • ignore关键词表示当前修改语句碰到违反唯一性约束条件等情况时,语句不会报错回退而是报警告信息

2 update语句使用示例

2.1 单表修改

##修改全表中的数据,慎用
mysql> update student2 set sname='aaa'; ##加上where限制条件,修改指定行的数据
mysql> update student2 set sname='aaa' where sid=1006; ##sid字段比原值增加1,哪一行先执行时随机的
mysql> update student2 set sid=1+sid; ##将sid字段设置成primary key,会出先以下错误,原因是,哪一行数据的sid先+1是随机的
mysql> update student2 set sid=1+sid;
ERROR 1062 (23000): Duplicate entry '1005' for key 'PRIMARY' ##所以在使用update时,一般会结合order by子句对数据先进行排序
mysql> update student2 set sid=sid+1 order by sid desc; ##默认是升序,desc表示降序
Query OK, 2 rows affected (0.06 sec)
Rows matched: 2 Changed: 2 Warnings: 0 ##使用limit限定行数,一般和order by配合使用
mysql> update student2 set sname='sss' order by id limit 2;

2.2 多表修改

##多表修改(表之间通过where条件进行join操作)
mysql> update items,month set items.price=month.price where items.id=month.id;

案例演示:

##案例需求:使用一条命令将students表中a,b改成students2中的aa,bb
mysql> select * from students;
+-----+-------+--------+---------+
| sid | sname | gender | dept_id |
+-----+-------+--------+---------+
| 1 | a | 1 | 1 |
| 4 | b | 1 | 1 |
+-----+-------+--------+---------+
2 rows in set (0.00 sec) mysql> select * from students2;
+-----+-------+--------+---------+
| sid | sname | gender | dept_id |
+-----+-------+--------+---------+
| 1 | aa | 1 | 1 |
| 3 | bb | 1 | 1 |
| 4 | cc | 1 | 1 |
+-----+-------+--------+---------+
3 rows in set (0.00 sec)
mysql> mysql> update students,students2 set students.sname=students2.sname where students.sid=students2.sid;

3 回滚机制简单设置

MySQL中的autocommit参数控制着是否可以回滚,默认其实开启的,开启代表自动回滚,使用set autocommit=off开启手动回滚功能,使用rollback命令,就可做回滚操作。

rollback回滚机制:当执行commit和rollback命令,表示当前事务的结束,下一个事务开始:

  • commit:终止当前的事物,该命令执行后,rollback不能返回到上个事务的初始状态
  • rollback:回滚当前的操作到此前事务的初始状态

4 练习

  • 将所有学号小于等于100的学生的系改为education
mysql> update students set students.dept_id=(select id from dept where dept_name='education');

mysql> update students,dept set students.dept_id=dept.id where sid<=100 and dept_name='education';
  • 将姓名为ruth且id在100和200之间的老师的姓名改成carey
mysql> update teacher set teacher.name='carey' where teacher.name='ruth' and id>100 and id<200;

SQL基础语法—update语句的更多相关文章

  1. SQL基础语法—insert语句

    1 insert语句 insert语句用于插入数据到表中,其基本语法有以下三种: Syntax: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IG ...

  2. SQL基础语法—create语句

    1 Create database语句 create database 语句是在MySQL实例上创建一个指定名的数据库,create schema语句的语义和create database是一样的.先 ...

  3. SQL语法基础之UPDATE语句

    SQL语法基础之UPDATE语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看UPDATE语句的帮助信息 1>.查看UPDATE的帮助信息 mysql> ? ...

  4. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  5. Spring mybatis源码篇章-动态SQL基础语法以及原理

    通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-Mybatis的XML文件加载 前话 前文通过Spring中配置mapperLocations属性来进行对m ...

  6. SQL基础语法(五)

    SQL INSERT INTO 语句INSERT INTO 语句 INSERT INTO 语句用于向表格中插入新的行. 语法:INSERT INTO 表名称 VALUES (值1, 值2,....) ...

  7. SQL基础语法笔记教程整理

    PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...

  8. SQL 基础:Select语句,各种join,union用法

    一.基本的SELECT语句 1. “*”的注意事项:在SELECT语句中,用*来选取所有的列,这是一个应该抵制的习惯. 虽然节省了输入列名的时间,但是也意味着获得的数据比真正需要的数据多的多.相应的, ...

  9. SQL 基础语法笔记教程整理

    最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...

随机推荐

  1. Deferred shading rendering path翻译

    Overview 概述 When using deferred shading, there is no limit on the number of lights that can affect a ...

  2. Asp.Net Core 3.0 Kestrel服务器下 高性能 WebSocket Server

    最近研究.net core 的各种高性能类型,内存池之类的东西,基于kestrel 服务器的websocket ,写个例子练下手 把原生的Websocket用ArrayPool<T>,Me ...

  3. PBFT && RBFT算法流程

    PBFT && RBFT算法流程以及其实现(上) 这篇文章主要是讲一下RBFT中共识算法流程以及节点的加入的流程.在下一篇博客中,将使用Java实现该算法. 传统的PBFT算法无法动态 ...

  4. CheckStyle报错的常见问题及解决方式

    CheckStyle报错的常见问题及解决方式 声明: 本文摘自百度文库.希望这篇文章提到的规范能对大家编程起到好的效果,此文不定期更新,将推出更加详尽的编程规范. 1   提示:Type is mis ...

  5. C++数值计算

    1.序 (1)程序设计分两种: 1.结构化设计(面向过程)——分解算法为模块,将算法的步骤分解为模块. 2.面向对象程序设计——主要是“类”与“对象”. (2)进制的转换 1.二进制转十进制 整数部分 ...

  6. 关于爬虫的日常复习(9)—— 实战:分析Ajax抓取今日头条接拍美图

  7. javaweb-codereview 学习记录-2

    1.Java 文件名空字节截断漏洞(%00 Null Bytes) 受空字节截断影响的JDK版本范围:JDK<1.7.40 实际上修复就是检查文件名中是否包含\u0000,包含则为非法路径 fi ...

  8. 分析一下 原型模式的 UML 类图 。 复制对象, 深浅拷贝 月经贴 ,请回避

  9. 个人第四次作业:Alpha项目测试

    个人第四次作业:Alpha项目测试 格式描述 详情 这个作业属于哪个课程 http://edu.cnblogs.com/campus/xnsy/GeographicInformationScience ...

  10. Java基础语法面试题50题整理(带答案)

    嗯,之前某些原因整理了这份面试题,加油生活 (:   0,嗯,先做简单的,那个不对() 1,int [] sy = {0,9,2,3}; 2,int [] sy1 = new int[4]; 3,in ...