用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的

SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之

意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。在MySQL中又多了一个REPLACE语句,

二、UPDATE

UPDATE的功能是更新表中的数据。这的语法和INSERT的第二种用法相似。必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。

UPDATE table_anem SET column_name1 = value1, column_name2 =

value2, ...

WHERE ... ;

如下面的语句将users表中id等于123的记录的age改为24

UPDATE users SET age = 24 WHERE id = 123;

同样,可以使用UPDATE更新多个字段的值 UPDATE users SET age = 24, name = 'Mike'

WHERE id = 123;

上面的UPDATE语句通过WHERE指定一个条件,否则,UPDATE将更新表中的所有记录的值。

在使用UPDATE更新记录时,如果被更新的字段的类型和所赋的值不匹配时,MySQL将这个值转换为相应类型的值。如果这个字段是数值类型,而且所赋值超过了这个数据类型的最大范围,那么MySQL就将这个值转换为这个范围最大或最小值。如果字符串太长,MySQL就将多余的字符串截去。如果设置非空字段为空,那么将这个字段设置为它们的默认值,数字的默认值是0,字符串的默认值是空串(不是null,是"")。

有两种情况UPDATE不会对影响表中的数据。

1. 当WHERE中的条件在表中没有记录和它匹配时。

2. 当我们将同样的值赋给某个字段时,如将字段abc赋为'123',而abc的原值就是'123'。

和INSERT、REPLACE一样,UPDATE也返回所更新的记录数。但这些记录数并不包括满足WHERE条件的,但却未被更新的记录。如下同的UPDATE语句就未更新任何记录。

UPDATE users SET age = 30 WHERE id = 12;

Query OK, 0 rows affected (0.00 sec)

需要注意的时,如果一个字段的类型是TIMESTAMP,那么这个字段在其它字段更新时自动更新。

在有些时候我们需要得到UPDATE所选择的行数,而不是被更新的行数。我们可以通过一些API来达到这个目的。如MySQL提供的C

API提供了一个选项可以得到你想要的记录数。而MySQL的JDBC驱动得到的默认记录数也是匹配的记录数。

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对记录进行排序。

mysql 怎样更新数据库_MySQL数据库更新语句update使用详解相关推荐

  1. 升级mysql服务器二进制备份_MySQL二进制日志备份和恢复详解

    基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句. 作用: 1.二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二 ...

  2. mysql二进制日志重置_MySQL二进制日志备份和恢复详解

    原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...

  3. mysql查询性能测试工具_MySQL性能测试工具MySQLslap使用实例详解

    原标题:MySQL性能测试工具MySQLslap使用实例详解 MySQLslap是MySQL(了解干货请戳:干货!超过500行的Mysql学习笔记)自带的基准测试工具,优点:查询数据,语法简单,灵活容 ...

  4. mysql表空间权限_MySQL InnoDB表空间加密示例详解

    前言 从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系 ...

  5. mysql主从配置干什么_mysql主从配置之slave_exec_mode=IDEMPOTENT详解

    slave_exec_mode=IDEMPOTENT是一个什么意思呢,在参考网站主从配置时有一些人要求slave_exec_mode=IDEMPOTENT哦,下面我们一起来看看关于它的详解吧. sla ...

  6. mysql模糊查询实例_Mysql实例sql模糊查询实例详解

    <Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...

  7. mysql 创建删除表_mysql创建删除表的实例详解

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...

  8. mysql数据库主主_MySQL主主复制(图文详解)

    MySQL主主复制(图文详解) 发布时间:2020-07-12 23:10:25 来源:51CTO 阅读:218 作者:BonnieJason 一.实现原理 主主复制即在两台MySQL主机内都可以变更 ...

  9. mysql 优化代码_MySQL Order by 语句优化代码详解

    Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考 MySQL Order By keyword是用来给 ...

  10. mysql myisam表分区_MySQL分区表的局限和限制详解

    禁止构建 分区表达式不支持以下几种构建: 存储过程,存储函数,UDFS或者插件 声明变量或者用户变量 可以参考分区不支持的SQL函数 算术和逻辑运算符 分区表达式支持+,-,*算术运算,但是不支持DI ...

最新文章

  1. python画一个祝福别人生日快乐_分享快乐给朋友的生日快乐祝福语生日贺卡句子...
  2. linux elf 视频,linux 实例讲解elf文件
  3. 新AlphaGo这么强!36小时从0自学成大师,100:0把李世乭版秒成渣渣 | Nature论文
  4. 【转】FluentAPI详细用法
  5. Linux下使用GDAL进行开发(automake使用)
  6. padding和卷积的区别_NiN:使用11卷积层替代全连接层
  7. 【GEE】配置本地python环境
  8. java调用python脚本文件_Java实现调用jython执行python文件的方法
  9. CSR8670项目实战:BlueSiri轻智能蓝牙音箱
  10. [白话解析] Flink的Watermark机制
  11. ADCS relay
  12. 2021年三亚旅游行业发展现状分析:旅游总收入达747.03亿元,占GDP的89.43%[图]
  13. OKK集中生产加工中心(MC)的主要部品
  14. 计算机开机没有显示是什么原因是什么情况,电脑开机后显示器没有反应解决方法...
  15. 数据库xxx已打开,并且一次只能有一个用户访问。 (Microsoft SQL Server,错误: 924)
  16. CTF-攻防世界web新手入门篇
  17. 全面讲解Web3.0域名的应用场景-赛道情况-未来挑战
  18. 什么是 ML.NET?应该如何理解机器学习基础知识?
  19. 文字滚动手持弹幕小程序
  20. arcgis api for js 4.19 尝鲜(React + ts+ arcgis api)

热门文章

  1. word文档中向下的箭头是什么,怎么去掉
  2. python中三角函数计算
  3. iOS相册权限、相机权限、麦克风权限
  4. 用python在大麦网抢票视频_大麦网怎么抢票快 大麦网抢票最快的方法
  5. gif动图怎么制作?怎么截取视频做成gif动图?
  6. 【C语言】快速排序psort函数的用法及自主实现psort函数
  7. 史上最全linux内核配置详解
  8. taptap APP端 产品体验的一点分析报告
  9. 数据管理与数据库 大学课程_根据数据,这50种最好的免费在线大学课程
  10. 电容器的 ESR 参数