MySQL数据库之UPDATE更新语句精解(4)
作者:佚名 来源:IT专家网论坛 发布时间:2009-03-20 15:21:00
UPDATE和REPLACE基本类似,但是它们之间有两点不同。
1. UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。
2. UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。
三、DELETE和TRUNCATE TABLE
在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。
如果要清空表中的所有记录,可以使用下面的两种方法:
DELETE FROM table1
TRUNCATE TABLE table1
其中第二条记录中的TABLE是可选的。
如果要删除表中的部分记录,只能使用DELETE语句。
DELETE FROM table1 WHERE ;
如果DELETE不加WHERE子句,那么它和TRUNCATE TABLE是一样的,但它们有一点不同,那就是DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。
如果一个表中有自增字段,使用TRUNCATE TABLE和没有WHERE子句的DELETE删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在DELETE语句中加上永真的WHERE,如WHERE 1或WHERE true。
DELETE FROM table1 WHERE 1;
上面的语句在执行时将扫描每一条记录。但它并不比较,因为这个WHERE条件永远为true。这样做虽然可以保持自增的最大值,但由于它是扫描了所有的记录,因此,它的执行成本要比没有WHERE子句的DELETE大得多。
DELETE和TRUNCATE TABLE的最大区别是DELETE可以通过WHERE语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。
与标准的SQL语句不同,DELETE支持ORDER BY和LIMIT子句,通过这两个子句,我们可以更好地控制要删除的记录。如当我们只想删除WHERE子句过滤出来的记录的一部分,可以使用LIMIB,如果要删除后几条记录,可以通过ORDER BY和LIMIT配合使用。假设我们要删除users表中name等于"Mike"的前6条记录。可以使用如下的DELETE语句:
DELETE FROM users WHERE name = 'Mike' LIMIT 6;
一般MySQL并不确定删除的这6条记录是哪6条,为了更保险,我们可以使用ORDER BY对记录进行排序。
DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;


猜你喜欢
- 1. 新建项目在命令行窗口下输入scrapy startproject scrapytest, 如下然后就自动创建了相应的文件,如下2. 修
- 在pandas中怎么样实现类似mysql查找语句的功能:select * from table where column_name = so
- 在 jupyter notebook参数化运行python 时,怕输出太多文件太大,想及时清除 notebook 的输出。在别人代码里看到用
- CI框架自带的zip类简单实用,本文就来简单说一下CI框架的zip类的使用。首先需要导入zip类:$this->load->(&
- PHP quotemeta() 函数实例在预定义的字符前添加反斜杠:<?php$str = "Hello world. (c
- 我们都知道数据是无价,如果不对数据进行备份,相当是让数据在裸跑,一旦服务器出问题,只有哭的份了。下面将介绍mysql数据库的自动备份,大家可
- 一、Python操作PDF 13大库对比PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档
- 本文实例讲述了Python简单实现自动删除目录下空文件夹的方法。分享给大家供大家参考,具体如下:总是发现电脑用上一段时间,各种软件生成各种目
- 我们有时请求服务器时,无论get或post请求,会出现403错误,这是因为服务器拒绝了你的访问,这时我们可以通过模拟浏览器的头部信息进行访问
- 本文主要给大家介绍了关于在CentOS 7下安装Python 3.5并与Python2.7兼容并存的相关内容,分享出来供大家参考学习,下面来
- 如下所示:import jsonresult = response.read()result.decode('utf-8')
- 前言本文主要给大家介绍了关于laravel5异常错误FatalErrorException in Handler.php line 38的解
- [概 要] 这篇文章讨论常用的"sql注入"技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里
- 前言因为一直在几个平台发文章,发现有些平台并不会检测文章中的图片是否会包含二维码,但是其中也有平台会去检测,所以就去研究了一下python如
- 本文为大家分享了python链表的基础概念和基础用法,供大家参考,具体内容如下一、什么是链表链表是由多个不同的节点组成,每个节点通过指针区域
- 1.方法详情:parametrize(argnames,argvalues,indirect=False,ids=None,scope=No
- 概述Anaconda安装后,会在开始菜单中添加菜单项,但是这些菜单项中,没有Jupyter Lab快捷方式。在实现前应该明确两点:开始菜单是
- 排序排序是指以特定格式排列数据。排序算法指定以特定顺序排列数据的方式。最常见的顺序是数字或字典顺序。在 Numpy 中,我们可以使用库中提供
- 目录1、封装1.1 私有属性和私有方法2、继承2.1 方法的重写2.2 在子类方法中调用父类方法2.3 多继承2.4 新式类和经典类3、多态
- Document自带的方法: 循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);win