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;

标签:MySQL数据库,UPDATE,更新,语句精解
0
投稿

猜你喜欢

  • 跟老齐学Python之编写类之一创建实例

    2021-05-06 21:16:56
  • 在sql Server自定义一个用户定义星期函数

    2012-02-12 15:47:28
  • mysql中错误:1093-You can’t specify target table for update in FROM clause的解决方法

    2024-01-14 06:11:58
  • Vue-cli配置打包文件本地使用的教程图解

    2024-05-22 10:42:05
  • Python使用PyYAML库读写yaml文件的方法

    2021-03-26 03:53:32
  • 教你怎么用Python操作MySql数据库

    2024-01-13 06:46:48
  • GO项目配置与使用的方法步骤

    2024-05-22 17:45:57
  • 多语言网站开发 不完全技术分析

    2008-02-18 12:52:00
  • python多进程控制学习小结

    2021-08-31 00:48:57
  • Python标准库之Math,Random模块使用详解

    2021-02-09 22:33:13
  • Oracle Index 的三个问题

    2010-07-26 12:53:00
  • Python学习之私有函数,私有变量及封装详解

    2022-05-28 13:47:15
  • 自动化收集SQLSERVER诊断信息的工具选择及使用介绍

    2024-01-14 11:01:04
  • Python进阶之全面解读高级特性之切片

    2023-08-06 21:28:00
  • 解决Pycharm无法import自己安装的第三方module问题

    2023-09-02 20:25:53
  • python网络爬虫精解之Beautiful Soup的使用说明

    2021-02-21 15:20:48
  • 在python中使用正则表达式查找可嵌套字符串组

    2021-10-07 07:02:06
  • MySQL数据库中与 ALTER TABLE 有关的问题

    2009-01-14 11:57:00
  • 设计和布局之间的思考

    2008-10-09 13:06:00
  • 详解go语言中type关键词的几种使用

    2024-04-25 13:21:29
  • asp之家 网络编程 m.aspxhome.com