1 update语句介绍

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

  1. Single-table syntax:
  2. UPDATE [LOW_PRIORITY] [IGNORE] table_reference
  3. SET assignment_list
  4. [WHERE where_condition]
  5. [ORDER BY ...]
  6. [LIMIT row_count]
  7. Multiple-table syntax:
  8. UPDATE [LOW_PRIORITY] [IGNORE] table_references
  9. SET assignment_list
  10. [WHERE where_condition]

update语句的常规用法

  1. update students set sname='abcd',gender='1' where sid=1;
  2. 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 bylimit子句
  • 执行update语句需要修改表的权限
  • low_priority关键词表示修改语句需要等待其他链接的读此表操作结束后再执行,之作用在MylSAMMEMORYMERGE存储引擎
  • ignore关键词表示当前修改语句碰到违反唯一性约束条件等情况时,语句不会报错回退而是报警告信息

2 update语句使用示例

2.1 单表修改

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

2.2 多表修改

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

案例演示:

  1. ##案例需求:使用一条命令将students表中a,b改成students2中的aa,bb
  2. mysql> select * from students;
  3. +-----+-------+--------+---------+
  4. | sid | sname | gender | dept_id |
  5. +-----+-------+--------+---------+
  6. | 1 | a | 1 | 1 |
  7. | 4 | b | 1 | 1 |
  8. +-----+-------+--------+---------+
  9. 2 rows in set (0.00 sec)
  10. mysql> select * from students2;
  11. +-----+-------+--------+---------+
  12. | sid | sname | gender | dept_id |
  13. +-----+-------+--------+---------+
  14. | 1 | aa | 1 | 1 |
  15. | 3 | bb | 1 | 1 |
  16. | 4 | cc | 1 | 1 |
  17. +-----+-------+--------+---------+
  18. 3 rows in set (0.00 sec)
  1. mysql> mysql> update students,students2 set students.sname=students2.sname where students.sid=students2.sid;

3 回滚机制简单设置

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

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

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

4 练习

  • 将所有学号小于等于100的学生的系改为education
  1. mysql> update students set students.dept_id=(select id from dept where dept_name='education');
  2. mysql> update students,dept set students.dept_id=dept.id where sid<=100 and dept_name='education';
  • 将姓名为ruthid在100和200之间的老师的姓名改成carey
  1. 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. swagger生成错误问题 汇总解决

    Unable to render this definition The provided definition does not specify a valid version field. Ple ...

  2. Java入门 - 语言基础 - 13.Character类

    原文地址:http://www.work100.net/training/java-character.html 更多教程:光束云 - 免费课程 Character类 序号 文内章节 视频 1 概述 ...

  3. 异数OS TCP协议栈测试(四)--网卡适配篇

    异数OS TCP协议栈测试(四)–网卡适配篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异 ...

  4. HBase二次开发之搭建HBase调试环境,如何远程debug HBase源代码

    版本 HDP:3.0.1.0 HBase:2.0.0 一.前言 之前的文章也提到过,最近工作中需要对HBase进行二次开发(参照HBase的AES加密方法,为HBase增加SMS4数据加密类型).研究 ...

  5. [bzoj4567] [loj#2012] [SCOI2016] 背单词

    Description \(Lweb\) 面对如山的英语单词,陷入了深深的沉思,「我怎么样才能快点学完,然后去玩三国杀呢?」.这时候睿智的凤老师从远处飘来,他送给了 \(Lweb\) 一本计划册和一大 ...

  6. influxdb的命令们

    InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...

  7. C++中虚析构的作用

    为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用. 基本概念: 析构函数是用来回收对象的: 虚析构函数是析构函数的一种: 基类是一类对象共有属性的抽象.比如,猫和狗都是动物,都会 ...

  8. 个人第4次作业——alpha项目测试

    这个作业属于哪个课程 http://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业的要求在哪里 https://www.cn ...

  9. qsort 函数笔记

    函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compare)(const void *, const void*)); ...

  10. ThreeJS 物理材质shader源码分析(顶点着色器)

    再此之前推荐一款GLTF物理材质在线编辑器https://tinygltf.xyz/ ThreeJS 物理材质shader源码分析(顶点着色器) Threejs将shader代码分为ShaderLib ...