MySQL必知应会-第20章-更新和删除数据

第20章-更新和删除数据

本章介绍如何利用UPDATE和DELETE语句进一步操纵表数据。

20.1 更新数据

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

  • 更新表中特定行;
  • 更新表中所有行。
    下面分别对它们进行介绍。
    不要省略WHERE子句 在使用UPDATE时一定要注意细心。因为稍不注意,就会更新表中所有行。在使用这条语句前,请完整地阅读本节。
    UPDATE与安全 可以限制和控制UPDATE语句的使用,更多内容请参见第28章。

UPDATE语句非常容易使用,甚至可以说是太容易使用了。基本的UPDATE语句由3部分组成,分别是;

  • 要更新的表;
  • 列名和它们的新值;140 更新和删除数据
  • 确定要更新行的过滤条件。

举一个简单例子。客户10005现在有了电子邮件地址,因此他的记录需要更新,语句如下

UPDATE语句总是以要更新的表的名字开始。在此例子中,要更新的表的名字为customers。 SET命令用来将新值赋给被更新的列。如这里所示, SET子句设置cust_email列为指定的值
: set cust_email=’[email protected]@com’

UPDATE语句以WHERE子句结束,它告诉MySQL更新哪一行。没有WHERE子句, MySQL将会用这个电子邮件地址更新customers表中所有行,这不是我们所希望的。
更新多个列的语法稍有不同;

在更新多个列时,只需要使用单个SET命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。在此例子中,更新客户10005的cust_name和cust_email列。

在UPDATE语句中使用子查询 UPDATE语句中可以使用子查询,使得能用SELECT语句检索出的数据更新列数据。关于子查询及使用的更多内容,请参阅第14章。

IGNORE关键字 如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。为即使是发生错误,也继续进行更新,可使用IGNORE关键字,如下所示;UPDATE IGNORE customers…
为了删除某个列的值,可设置它为NULL(假如表定义允许NULL值)。如下进行;

其中NULL用来去除cust_email列中的值。

20.2 删除数据

为了从一个表中删除(去掉)数据,使用DELETE语句。可以两种方式使用DELETE;

  • 从表中删除特定的行;
  • 从表中删除所有行。
    下面分别对它们进行介绍。
    不要省略WHERE子句 在使用DELETE时一定要注意细心。因为稍不注意,就会错误地删除表中所有行。在使用这条语句前,请完整地阅读本节。DELETE与安全 可以限制和控制DELETE语句的使用,更多内容请参见第28章。前面说过, UPDATE非常容易使用,而DELETE更容易使用。
    下面的语句从customers表中删除一行;

这条语句很容易理解。 DELETE FROM要求指定从中删除数据的表名。WHERE子句过滤要删除的行。在这个例子中,只删除客户10006。如果省略WHERE子句,它将删除表中每个客户。DELETE不需要列名或通配符。 DELETE删除整行而不是删除列。为了删除指定的列,请使用UPDATE语句。

删除表的内容而不是表 DELETE语句从表中删除行,甚至是删除表中所有行。但是, DELETE不删除表本身。

更快的删除 如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快( TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。

20.3 更新和删除的指导原则

前一节中使用的UPDATE和DELETE语句全都具有WHERE子句,这样做的理由很充分。如果省略了WHERE子句,则UPDATE或DELETE将被应用到表中所有的行。换句话说,如果执行UPDATE而不带WHERE子句,则表中每个行都将用新值更新。类似地,如果执行DELETE语句而不带WHERE子句,表的所有数据都将被删除。下面是许多SQL程序员使用UPDATE或DELETE时所遵循的习惯。

  • 除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE或DELETE语句。
  • 保证每个表都有主键(如果忘记这个内容,请参阅第15章),尽可能像WHERE子句那样使用它(可以指定各主键、多个值或值的范围)。
  • 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
  • 使用强制实施引用完整性的数据库(关于这个内容,请参阅第15章),这样MySQL将不允许删除具有与其他表相关联的数据的行。

小心使用 MySQL没有撤销( undo)按钮。应该非常小心地使用UPDATE和DELETE,否则你会发现自己更新或删除了错误的数据。19020.4 小结 143

20.4 小结

我们在本章中学习了如何使用UPDATE和DELETE语句处理表中的数据。我们学习了这些语句的语法,知道了它们固有的危险性。本章中还讲解了为什么WHERE子句对UPDATE和DELETE语句很重要,并且给出了应该遵循的一些指导原则,以保证数据的安全。

原文地址:https://www.cnblogs.com/LearnFromNow/p/9349855.html

时间: 2024-10-20 19:17:21

MySQL必知应会-第20章-更新和删除数据的相关文章

MySQL必知应会-第22章-使用视图

第22章-使用视图 本章将介绍视图究竟是什么,它们怎样工作,何时使用它们.我们还将看到如何利用视图简化前面章节中执行的某些SQL操作. 22.1 视图 需要MySQL 5 MySQL 5添加了对视图的支持.因此,本章内容适用于MySQL 5及以后的版本.视图是虚拟的表.与包含数据的表不一样,视图只包含使用时动态检索数据的查询.理解视图的最好方法是看一个例子.第15章中用下面的SELECT语句从3个表中检索数据: 此查询用来检索订购了某个特定产品的客户.任何需要这个数据的人都必须理解相关表的结构,

MySQL必知应会-第5章-排序检索数据

第五章 排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据. 5.1 排序数据 正如前一章所述,下面的SQL语句返回某个数据库表的单个列.但请看其输出,并没有特定的顺序. 其实,检索出的数据并不是以纯粹的随机顺序显示的.如果不排序,数据一般将以它在底层表中出现的顺序显示.这可以是数据最初添加到表中的顺序.但是,如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响.因此,如果不明确控制的话,不能(也不应该)依赖该排序顺序.关系

MySQL必知应会-第8章-用通配符进行过滤

第八章 用通配符进行过滤 本章介绍什么是通配符.如何使用通配符以及怎样使用LIKE操作符进行通配搜索,以便对数据进行复杂过滤. 8.1 LIKE操作符 前面介绍的所有操作符都是针对已知值进行过滤的.不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共同点是过滤中使用的值都是已知的.但是,这种过滤方法并不是任何时候都好用.例如,怎样搜索产品名中包含文本anvil的所有产品?用简单的比较操作符肯定不行,必须使用通配符.利用通配符可创建比较特定数据的搜索模式.在这个例子中,如果你

MySQL必知应会-第17章-组合查询

第17章-组合查询 本章讲述如何利用UNION操作符将多条SELECT语句组合成一个结果集. 17.1 组合查询 多数SQL查询都只包含从一个或多个表中返回数据的单条SELECT语句. MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回.这些组合查询通常称为并( union) 或复合查询(compound query).有两种基本情况,其中需要使用组合查询:? 在单个查询中从不同的表返回类似结构的数据:? 对单个表执行多个查询,按单个查询返回数据. 组合查询和多

MySQL必知应会-第12章-汇总数据

第12章 汇总数据 本章介绍什么是SQL的聚集函数以及如何利用它们汇总表的数据. 12.1 聚集函数 我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数.使用这些函数, MySQL查询可用于检索数据,以便分析和报表生成.这种类型的检索例子有以下几种. 确定表中行数(或者满足某个条件或包含某个特定值的行数). 获得表中行组的和. 找出表列(或所有行或某些特定的行)的最大值.最小值和平均值.上述例子都需要对表中数据(而不是实际数据本身)汇总.因此,返回实际表数据是对时间和处

MySQL必知应会-第4章-检索数据

第四章 检索数据 本章将介绍如何使用SELECT语句从表中检索一个或多个数据列. 4.1 SELECT语句 正如第1章所述, SQL语句是由简单的英语单词构成的.这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的.大概,最经常使用的SQL语句就是SELECT语句了.它的用途是从一个或多个表中检索信息.为了使用SELECT检索表数据,必须至少给出两条信息--想选择什么,以及从什么地方选择. 4.2 检索单个列 我们将从简单的SQL SELECT语句开始介绍,此语句如下所示: 上述语句利

MySQL必知应会-第23章-使用存储过程

第23章-使用存储过程 本章介绍什么是存储过程,为什么要使用存储过程以及如何使用存储过程,并且介绍创建和使用存储过程的基本语法. 23.1 存储过程 需要MySQL 5 MySQL 5添加了对存储过程的支持,因此,本章内容适用于MySQL 5及以后的版本.迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形. 为了处理订单,需要核对以保证库存中有相应的物品. 如果库存有物品,这些物品需要预定以便不

SQL必知必会 笔记 第十六章 更新和插入数据

16.1更新数据 为了更新(修改)表中的数据,可使用UPDATE语句.可采用两种方式使用UPDATE: (1)更新表中特定的行 (2)更新标红所有的行 不要省略WHERE子句:在使用UPDATE时一定要注意细心.因为稍不注意,就会更新表中所有行. 基本的UPDATE语句由3部分组成: (1)要更新的表 (2)列名和它们的新值 (3)确定要更新哪些行的过滤条件 不要省略WHERE子句 更新单个列 UPDATE Customers SET cust_email = '[email protected

MySQL必知必会 pdf完整版

需要学习的朋友可以通过网盘下载: http://tadown.com/fs/8yi6be9nsehu9e921/内容简介  · · · · · · <MySQL必知必会>MySQL是世界上最受欢迎的数据库管理系统之一.书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理清晰.系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增. 读者评论: 飞林沙  2013-11