SQL基础语法—update语句

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 bylimit子句
  • 执行update语句需要修改表的权限
  • low_priority关键词表示修改语句需要等待其他链接的读此表操作结束后再执行,之作用在MylSAMMEMORYMERGE存储引擎
  • 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回滚机制:当执行commitrollback命令,表示当前事务的结束,下一个事务开始:

  • 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';
  • 将姓名为ruthid在100和200之间的老师的姓名改成carey
mysql> update teacher set teacher.name='carey' where teacher.name='ruth' and id>100 and id<200;

原文地址:https://www.cnblogs.com/dabric/p/12343857.html

时间: 2024-10-04 12:19:58

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

SQL基础语法—insert语句

insert语句 insert语句用于插入数据到表中,其基本语法有以下三种: Syntax: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] .

SQL基础语法—select语句

1 select语句介绍 select语句是值从现存的一个或多个表中查看满足条件的数据,其基本语法如下: Syntax: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [

SQL基础语法(笔记)

SQL基础语法:1.SELECT :SELECT 列名称 FROM 表名称 以及 SELECT * FROM 表名称2.DISTINCT:SELECT DISTINCT 列名称 FROM 表名称3.WHERE:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值4.ORDER BY 语句用于根据指定的列对结果集进行排序.默认升序:ASC,降序:DESC5.INSERT:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....),

SQL基础语法和函数

SQL常用查询语句和函数 (2012-05-09 09:44:55) 转载▼ 标签: sql查询 函数 sql常用语句 it 分类: SQL SQL SELECT 语法 SELECT 列名称 FROM 表名称 SELECT LastName,FirstName FROM Persons --------------------------------------------------------------------------------- SQL SELECT DISTINCT 语句 在

SQL基础语法等

--1.while循环 declare @sum int declare @i int set @i=1 set @sum=0 while(@i<101) begin set @sum =@sum+@i set @i=@i+1 if(@i>90) print @i end print @sum --2.goto语句 declare @num int set @num=100 flag: print @num select @num=@num+1 while(@num<106)goto f

Python基础语法&mdash;字符串&amp;语句&amp;集合

Python字符串 Python中不支持char单字符类型,单字符在Python中也是一个字符串 Python字符串更新 更新Python字符串方法 1234 var1 = 'Hello World!'print "Updated String :- ", var1[:6] + 'Python' 实际执行效果为 Updated String :- Hello Python Python转义字符 Python字符串运算符 Python字符串格式化 Python三引号(triple quo

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

一.基本的SELECT语句 1. “*”的注意事项:在SELECT语句中,用*来选取所有的列,这是一个应该抵制的习惯. 虽然节省了输入列名的时间,但是也意味着获得的数据比真正需要的数据多的多.相应的,也会降低应用程序的性能及网络性能. 良好的规则是只选所需. 2. join子句 join是用来定义如何从多个表中选取数据并组合成一个结果集. join必需是因为(1)我们所要获取的所有信息并不都在一个表中,或者(2)所要返回的信息都在一个表中,但是其上设置的条件信息却在另一个表中. join的共同点

JavaSE入门学习7:Java基础语法之语句(下)

继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for. (5)Java循环语句之while 语法: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 运行

关于SQL中的Update语句

今天在SQL数据库操作时需要将一张表中的数据Update到另一张表中去, 可是用我以往的写法确怎么也不能成功.代码如下: update table1 a set a.Col1=b.Col2 from table2 b where a.c=b.c 上面的写法似乎是在Oracle的环境下可以实现的, (具体没有验证过) 反正在SQL Server中是无法执行. 上网找了一下终于找到了解决方法, 如下: Oralce和DB2都支持的语法: UPDATE A  SET (A1, A2, A3) = (S