update语句详解及相关练习题

本文详细介绍了Update语句的语法,包括set子句的用法,如使用字面量、表达式、函数及子查询,并强调了子查询的注意事项。还探讨了order by子句在更新主键时的特殊情况。此外,文章通过单表和多表的实例题,展示了如何更新单个或多个表中的数据,强调了多表更新时保持数据一致性的优点。
摘要由CSDN通过智能技术生成
将满足WHERE条件的所有行的一个或多个列值改为新的值。没有WHERE子句则修改所有的行

一、Syntax:

Single-table syntax:更新一个表中的值

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...-------查找修改数据的列
    [WHERE where_condition]---过滤条件,过滤出数据的行
    [ORDER BY ...]----排序操作,更改跟新表数据的排序
    [LIMIT row_count]---显示修改的行数

1、set子句:(1)字面量 (2)(表达式) (3)(函数) (4)(子查询)
update t1 set id=(select sum(id) from t1) where name=‘b’;
注意事项:set语句子查询不可以是要修改的表本身,不可以使用组函数-----------看例5
2、order by
修改主键列时,如果是自增一,那么就有有报错,因为1+1=2,但是已经有2的值了,所以可以先降序排列,在增加1
很少使用,除非涉及到修改主键、修改特定顺序的行

Multiple-table syntax:更新多个表中的值

UPDATE [LOW_PRIORITY] [IGNORE] table_references---------------任何合法的语法,但是不能使用order by和limit语句
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]

3、更改多个表中的数据
原理:1.先根据关联条件形成多表关联,找出多个表相关联的列
2.根据过滤条件筛选出要修改的行
3.同时修改多个表的数据(上两步可以认为形成了一张表的数据)

二、单表例题:
例1: 把95号球员的联盟会员号码改为2000

1.mysql> select LEAGUENO from PLAYERS where PLAYERNO=95;
+----------+
| LEAGUENO |
+----------+
| NULL     |
+----------+
1 row in set (0.00 sec)

2.mysql> update PLAYERS set LEAGUENO=2000 where PLAYERNO=95;

例2: 把所有的罚款增加5%(不需要where条件,因为是修改所有的行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值