标签:自动 war 多个 sig 使用 练习 _id 唯一性 mit
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
关键词表示当前修改语句碰到违反唯一性约束条件等情况时,语句不会报错回退而是报警告信息##修改全表中的数据,慎用
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;
##多表修改(表之间通过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;
MySQL中的autocommit
参数控制着是否可以回滚,默认其实开启的,开启代表自动回滚,使用set autocommit=off
开启手动回滚功能,使用rollback
命令,就可做回滚操作。
rollback
回滚机制:当执行commit
和rollback
命令,表示当前事务的结束,下一个事务开始:
commit
:终止当前的事物,该命令执行后,rollback
不能返回到上个事务的初始状态rollback
:回滚当前的操作到此前事务的初始状态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;
标签:自动 war 多个 sig 使用 练习 _id 唯一性 mit
原文地址:https://www.cnblogs.com/dabric/p/12343857.html