前提要述:参考书籍《MySQL必知必会》
6.1 更新数据

为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方式使用UPDATE:

更新表中特定的行;
更新表中所有的行。
UPDATE语法的结构由3部分组成:

要更新的表;
列名和它们的新值;
确定要更新行的过滤条件(WHERE关键字)。
格式:

UPDATE

SET field1=newValue1, field2=newValue2,...
WHERE condition;
解释:

SET命令用来将新值赋给被更新的列。
使用WHERE子句来告诉MySQL要更新哪一行,一般会选择一个可以唯一区别其他行的字段作为条件。如果没有WHERE子句那么就会更新表中所有的行,这是非常致命的问题。
比如:在学生表中修改李四的性别:

UPDATE student SET stu_sex='女' WHERE stu_name='李四';
如果为了删除某个列的值,则可以设置为NULL(假设表定义允许NULL值)

在UPDATE语句中可以使用子查询的结果来更新数据;如果在更新一行或多行时出现一个错误,则整个UPDATE操作都会被取消(错误发生前更新的所有列被恢复到它们原来的值)。即使是错误,如果要继续执行更新,则可以使用IGNORE关键字。

UPDATE IGNORE

...;
6.2 删除数据

为了将一个表中的某一行删除,使用DELETE语句。可以有两种方式使用DELETE:

从表中删除特定的行;
从表中删除所有行。
格式:

DELETE FROM

WHERE condition;
解释:

DELETE不需要列名和通配符。DELETE删除整行而不是删除列 。如果要删除列,使用UPDATE。
DELETE跟UPDATE一样,都必须要有WHERE,即指定要删除哪一行,所以必须注意;除非你要删除表中全部数据,那就不加WHERE。
WHERE一般指定的是能够唯一区分行的字段,比如主键,名字(假设没有重名的话)
例如:删除学生表中名为李四的学生:

DELETE FROM student WHERE stu_name='李四';
如果想要更快的从表中删除所有的行,不要使用DELETE,使用TRUNCATE TABLE语句,它完成相同的工作,但是速度更快。因为TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据。

6.3 更新和删除的指导原则

SQL程序员使用UPDATE和DELETE必须遵循的习惯:

除非确实打算更新和删除每一行,否则绝不要使用不带WHERE子句的UPDATE或DELETE语句。
保证每个表都是有主键的,尽可能像WHERE子句那样使用它(可以指定各主键,多个值或值的范围)。
在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT查询语句进行测试,保证它过滤的是正确的记录,以防止编写WHERE子句不正确。
使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据的行(外键)。
MySQL没有撤销(undo)按钮,所以应该小心使用UPDATE和DELETE语句。

MySQL快速回顾:更新和删除操作的更多相关文章

  1. MySQL快速回顾:高级查询操作

    8.1 排序数据 检索出的数据并不是以纯粹的随机顺序显示的.如果不排序,数据一般将以它在底层表中出现的顺序显示.这可以是数据最初添加到表中的顺序.但是,如果数据后来进行过更新或删除,则此顺序将会受到M ...

  2. Entity Framework 6 Recipes 2nd Edition(10-10)译 - > 为TPH继承的插入、更新、删除操作映射到存储过程

    10-10. 为TPH继承的插入.更新.删除操作映射到存储过程 问题 TPH继承模型,想把它的插入.修改.删除操作映射到存储过程 Solution 假设数据库有一个描述不同种类的产品表(Product ...

  3. ASP入门(二十三)- 数据库插入、更新和删除操作

    我们这里介绍如何使用 Recordset 对象进行插入.更新和删除操作,顺便和 SQL 语句对比. 插入记录 AddNew 方法用于插入一条记录,首先打开一个记录集,并且这个记录具备可写特性,而后调用 ...

  4. MySQL快速回顾:数据库和表操作

    前提要述:参考书籍<MySQL必知必会> 利用空闲时间快速回顾一些数据库基础. 4.1 连接 在最初安装MySQL,可能会要求你输入一个管理登录(通常为root)和一个口令(密码). 连接 ...

  5. SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )

    SQL 先说点废话,很久没发文了,整理了下自己当时入门 SQL 的笔记,无论用于入门,回顾,参考查询,应该都是有一定价值的,可以按照目录各取所需.SQL数据库有很多,MySQL是一种,本文基本都是SQ ...

  6. mysql---级联更新和删除操作

    我们通常有这样的需求:删除表Table 1中记录,需要同时删除其它表中与Table 1有关的若干记录. 对于这种,我们有两种解决方法: 一,使用innodb表的外键约束 ALTER TABLE `sc ...

  7. Django记录数据库创建、更新、删除操作开源插件推荐

    github: django-simple-history - 安装 $ pip install django-simple-history - 配置 在Settings中添加 INSTALLED_A ...

  8. MySQL<添加、更新与删除数据>

    添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,……) VALUES(值1,值2,……); insert into 表名 values(值1, ...

  9. MySQL从删库到跑路(六)——SQL插入、更新、删除操作

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.插入数据 1.为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录的值. IN ...

随机推荐

  1. Fragment学习(二): 管理Fragment和Fragment通讯

    一. 管理Fragment 首先,如果你想在Android3.0及以下版本使用Fragment,你必须引用android-support-v4.jar这个包 然后你写的activity不能再继承自Ac ...

  2. HTML提供的6种空格

    HTML提供了6种空格(space entity),它们拥有不同的宽度.   非断行空格( )是常规空格的宽度,可运行于所有主流浏览器.其它几种空格( . . .‌.‍)在不同浏览器中宽度各异.    ...

  3. UVA 11732——Trie

    解题思路: 首先我们可以发现: 1.若两个字符串A.B不相等,且它们的公共前缀为S,则它们的比较次数为:2 * len(S) + 1: 2.若两个字符串相等,设为A,则它们的比较次数为 2 * ( l ...

  4. 初学ServiceMix

    因为老板给的毕业题目是ESB相关,需要学下ServiceMix(版本7.0.1) 但是SOA这东西技术上比较旧,加上主要是企业在用,个人学习的不多,所以资料比较少 CSDN上看到篇文章不错但是有些地方 ...

  5. 关于methods、computed、watch的使用

    关于methods.computed.watch的使用,前前后后我有转载过好几篇别人的文章.但始终没有自己成型的博文来记录,现自己尝试性的总结一下三者之间的区别: computed:计算属性 comp ...

  6. C# 如何在项目引用x86 x64的非托管代码

    因为现在的项目使用的是 AnyCpu 在 x86 的设备使用的是x86,在x64使用的是x64,但是对于非托管代码,必须要在x64使用x64的dll,在x86使用x86的dll.在C++没有和C#一样 ...

  7. linux 操作 I/O 端口

      在驱动硬件请求了在它的活动中需要使用的 I/O 端口范围之后, 它必须读且/或写到这些 端口. 为此, 大部分硬件区别 8-位, 16-位, 和 32-位端口. 常常你无法混合它们, 象你 正常使 ...

  8. vue中的时间修饰符stop,self

    stop阻止自身以外的冒泡 self只会阻止自身冒泡

  9. vue 插件大全

    UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...

  10. ZOJ——Knight Moves(bfs)

    Knight Moves Time Limit: 2 Seconds      Memory Limit: 65536 KB A friend of you is doing research on ...