1.1 使用 INSERT…VALUES 语句插入数据( 四 )


二、修改(更新)数据
要执行修改的操作可以使用语句 , 其语法如下:
参数说明如下:
[]:可选项 , 表示在多用户访问数据库的情况下可用于延迟操作 , 直到没有别的用户再从表中读取数据为止 。这个过程仅适用于表级锁的存储引擎(如 、 和 MERGE) 。[]:在 MySQL 中 , 通过语句更新表中多行数据时 , 如果出现错误 , 那么整个语句操作都会被取消 , 错误发生前更新的所有行将被恢复到它们原来的值 。因此 , 为了在发生错误时也要继续进行更新 , 可以在语句中使用关键字 。SET 子句:必选项 , 用于指定表中要修改的字段名及其字段值 。其中的值可以是表达式 , 也可以是该字段所对应的默认值 。如果要指定默认值 , 可使用关键字。WHERE 子句:可选项 , 用于限定表中要修改的行 , 如果不指定该子句 , 那么语句会更新表中的所有行 。ORDER BY 子句:可选项 , 用于限定表中的行被修改的次序 。LIMIT 子句:可选项 , 用于限定被修改的行数 。
示例6:将管理员信息表中用户名为amo的管理员密码修改为 。
注意: 更新时一定要保证 WHERE 子句的正确性 , 一旦 WHERE 子句出错 , 将会破坏所有改变的数据 , 所以在实际开发中最好是先使用查看 WHERE 子句的准确性 , 在使用。
#如果省略WHERE 子句 , 则表中的所有数据都将被更新#如果需要回滚数据 , 需要保证在DML前 , 进行设置: SET AUTOCOMMIT = FALSE;mysql> UPDATE tb_admin2 SET password='amo123';Query OK, 8 rows affected (0.00 sec)Rows matched: 9Changed: 8Warnings: 0mysql> SELECT * FROM tb_admin2;+----+-----------+----------+------------+| id | username| password | createtime |+----+-----------+----------+------------+|1 | amo| amo123| NULL||2 | Jerry| amo123| NULL||3 | Paul| amo123| NULL||4 | Ben| amo123| NULL||5 | Crystal| amo123| NULL||6 | Jason| amo123| NULL||7 | Lily| amo123| NULL||8 | Amo1234| amo123| NULL||9 | Amo123456 | amo123| NULL|+----+-----------+----------+------------+9 rows in set (0.00 sec)
如果表中存在外键 , 更新中的数据可能会出现完整性错误 , 这个在后续讲解约束知识点的时候再进行演示 , 这里不再赘述 , 如下图所示:
三、删除数据
在数据库中 , 有些数据已经失去意义或者发生错误 , 此时需要将它们删除 。在 MySQL 中 , 可以使用或者TABLE 语句删除表中的一行或多行数据 , 下面分别进行介绍 。
3.1 通过语句删除数据
通过语句删除数据的基本语法格式如下:
参数说明如下:
[]:可选项 , 表示在多用户访问数据库的情况下可用于延迟操作 , 直到没有别的用户再从表中读取数据为止 。这个过程仅适用于表级锁的存储引擎 (如、 和 MERGE) 。[QUICK]:可选项 , 用于加快部分种类的删除操作速度 。[]:在 MySQL 中 , 通过语句删除表中多行数据时 , 如果出现错误 , 那么整个语句操作都会被取消 , 错误发生前更新的所有行将被恢复到它们原来的值 。因此 , 为了在发生错误时继续进行删除 , 可以在语句中使用关键字 。数据表名:用于指定要删除的数据表的名称 。WHERE 子句:可选项 , 用于限定表中要删除的行 , 如果不指定该子句 , 那么语句会删除表中的所有行 。ORDER BY 子句:可选项 , 用于限定表中的行被删除的次序 。LIMIT 子句:可选项 , 用于限定被删除的行数 。