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.der 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 回滚机制简单设置
sql中update什么意思
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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。