前提要述:参考书籍《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. Python--day66--模板语言之自定义mysimpletag

  2. SpringBoot 集成 Activiti 一路踩得坑

    由于项目需要,本人开始在项目Spring boot 中集成工作流引擎Activiti.由于第一次集成,一路上步步都是坑,怪我没有先去看官方文档.现将一路上遇到的问题一一记录. 一. 环境配置 1.项目 ...

  3. poj1573

    题意:给出一个矩形,N,E,S,W分别代表进行移动的方向,如果走出矩形网格则输出经过的网格数,如果在矩形网格内循环,则输出没进入循环之前所走过的网格数和循环所经过的网格数: 思路:创建两个数组,一个字 ...

  4. 浅谈Python Django框架

    1.Django简介 Python下有多款不同的 Web 框架,Django是最有代表性的一种.许多成功的网站和APP都基于Django. Django是一个开源的Web应用框架,由Python写成. ...

  5. thinkcmf,thinksns,thinkphp,onethink三者是什么关系?

    thinksns 是基于tp的老版本二开的 thinkcmf 是网友基于tp开发的cmf thinkphp 是顶想的框架 onethink 是顶想基于tp开发的cmf 官方目前只有ThinkPHP和O ...

  6. mysql 修改列为not null报错Invalid use of NULL value

    场景:mysql 给表新增parent_id列,并设置为not null,保存时报错Invalid use of NULL value. 报错原因:因为已存在的数据的parent_id列为null,与 ...

  7. win10 uwp 如何使用DataTemplate

    这是数据模板,一般用在数组的绑定,显示数组中的元素. 假如我们有一个列表,列表里是书,包括书名.作者.还有出版,那么我们只有源信息,如何把它显示到我们的ListView,就需要DataTemplate ...

  8. 【codeforces 749B】Parallelogram is Back

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. C#面试题整理(不带答案)

     1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么?  2.什么是事务?什么是锁?  3.什么是索引,有什么优点?  4.视图是什么?游标是什么?  5.什么是存储过程?有什么优 ...

  10. [板子]用线段树解决ST表问题

    ST表可以参考:http://blog.csdn.net/whistlena/article/details/52191463 简单说就是区间RMQ最值问题. 对解决这种问题,线段树不用用啥啊. 扔一 ...