MySQL必知必会——第二十章更新和删除数据

2023-11-08

更新和删除数据

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

更新数据

为了更新(修改)表中的数据,可以使用UPDATE语句。

UPDATE的两种用法:

  • 更新表中特定行。
  • 更新表中所有行。

不要省略WHERE子句 缺少WHERE子句的过滤,UPDATE将更新所有行。除非需要,不要省略WHERE子句。
UPDATE与安全 可以限制和控制UPDATE语句的使用。

UPDATE语句非常简单,它由三部分组成:

  • 要更新的表。
  • 要更新的列和新的列值。
  • 要更新行的过滤条件。

更新客户10005的电子邮箱地址:

mysql> UPDATE customers
    -> SET cust_email = 'elmer@fudd.com'
    -> WHERE cust_id = 10005;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

UPDATE语句以要更新的表名开始。SET命令将新值赋给要更新的列。WHERE子句告诉MySQL要更新哪一行。没有WHERE子句,将更新所有行的邮箱地址,这不是我们想要的。

更新多个列:

mysql> UPDATE customers
    -> SET cust_name = 'The Fudds',
    ->     cust_email = 'elmer@fudd.com'
    -> WHERE cust_id = 10005;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

更新多个列,只需要使用单个SET命令,每个更新的列和新列值间用逗号分隔(最后一列不用逗号)。

  • 在UPDATE语句中使用子查询 UPDATE语句中可以使用子查询(MySQL必知必会——第十四章使用子查询),使用SELECT语句检索出的数据更新列数据。
  • IGNORE关键字 如果用UPDATE语句更新多行时发生错误,那整个UPDATE操作将被取消(数据回滚至执行语句前)。可以使用IGNORE关键字,即使个别行发生错误,合法行也会继续更新。
    使用示范:
    UPDATE IGNORE customers
    

为了删除某个列的值,可以把它设置成NULL(如果允许):

mysql> UPDATE customers
    -> SET cust_email = NULL
    -> WHERE cust_id = 10005;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

删除数据

为了删除数据,可以使用DELETE语句。
使用DELETE语句的两种方式:

  • 从表中删除特定行。
  • 从表中删除所有行。

不要省略WHERE子句 缺少WHERE子句的过滤,DELETE将删除所有行。除非需要,不要省略WHERE子句。
DELETE与安全 可以限制和控制DELETE语句的使用。

DELETE语句比UPDATE语句更为简单:

mysql> DELETE FROM customers
    -> WHERE cust_id = 10006;
Query OK, 1 row affected (0.01 sec)

此语句删除客户10006的数据。DELETE FROM要求指定要删除数据的表名。WHERE子句过滤要删除的行。若省略WHERE子句,将删除customers表中所有行。

DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除指定列,请使用UPDATE语句。

  • 删除表的内容而不是表 DELETE语句从表中删除行,但DELETE不删除表本身。
  • 更快的删除 如果想删除表中所有行,可以使用TRUNCATE TABLE语句。它完成相同的工作,但速度更快。原理:销毁原来的表,再重新创建一个表。它不需要逐行删除数据。

更新和删除的指导原则

使用更新和删除的良好习惯:

  • 除非更新和删除每一行,否则绝对不要省略WHERE子句。
  • 保证每个表都有主键MySQL必知必会——第十五章联结表),WHERE子句尽可能多用主键进行过滤。
  • 对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证要更新或删除的行是我们需要的。
  • 使用强制实施引用完整性的数据库(MySQL必知必会——第十五章联结表),这样MySQL将不允许删除具有与其他表相关联的数据的行。

小心使用 MySQL没有撤销(undo)按钮。应该非常小心地使用UPDATE和DELETE,否则出现错误会很难受。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL必知必会——第二十章更新和删除数据 的相关文章

  • 通过货币换算获取每种产品类型的最低价格

    我想选择每种产品类型中最便宜的 包括运费 价格转换为当地货币 最便宜 产品 价格 产品 运费 seller to aud 我的数据库有如下表 PRODUCTS SELLERS id type id seller id price shipp
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 使用 Greasemonkey 时存储数据

    使用 Greasemonkey 时是否有存储大量数据的好方法GM setValue只是没有削减它 那么这里有一些选项 设置服务器来保存数据 对于用户 并使用 xhr 来 创建 编辑 删除数据 谷歌应用程序 发动机 GAE http code
  • 如何将 MySQL 数据库更改为 UTC?

    我使用的是 Windows 7 对数据库方面的东西有点陌生 我尝试在 Google 上搜索如何将系统时区更改为 UTC 但文档有些高级 我不太确定如何更改此字段 在 my ini 文件的 mysqld 部分下 添加以下行 default t
  • MySQL 存储过程将值分配给 select 语句中的多个变量

    这是我的存储过程 我在为声明的变量赋值时遇到问题 当我执行它时 插入和更新命令工作正常 但声明变量的值保持为 0 但我在数据库中有一些价值 我怎样才能正确地做到这一点 BEGIN DECLARE PaidFee INT DEFAULT 0
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • Neo4j Desktop DB 无法启动,状态为“KILLED”

    运行 Neo4j Desktop 版本 1 0 15 尝试启动DB导致启动失败 数据库启动失败 DB database f8950fdd 6b5f 4fea 8c9f e8457ee1da9a v3 3 1 退出 状态为 已杀 检查日志 主
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • fetchsize和batchsize对Spark的影响

    我想通过以下方式控制 RDB 的读写速度Spark直接 但标题已经透露的相关参数似乎不起作用 我可以得出这样的结论吗fetchsize and batchsize我的测试方法不起作用 或者它们确实会影响阅读和写作方面 因为测量结果基于规模是
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 基于卷积神经网络cnn的情感分析代码

    说先看一下这个图 它大体介绍了CNN的自然语言处理流程 1 首先每个单词对应一行 d 5表示分了5个维度 一般是分128维 300维之类的 这里为了方便 用d 5 这样的话矩阵就是7 5 2 然后第一步进行卷积的操作 分别使用了四行的卷积核
  • 机器学习面试笔记

    本文结合 百面机器学习 一书进行整理 1 为什么需要对数值类型的特征做归一化 对数值类型归一化可以将所有的特征都统一到一个大致相同的数值区间内 常用方法 1 线性函数归一化 对原始数据进行线性变换 使结果映射到 0 1 范围内 公式 2 零
  • 【数据异常校验】肖维勒准则(Chauvenet Criterion)处理异常数据

    介绍 在统计理论中 肖维勒准则 以William Chauvenet命名 是评估一组实验数据 一组异常值 是否可能是虚假的一种手段 肖维勒准则背后的想法是找到一个以正态分布的均值为中心的概率带 它应该合理地包含数据集的所有n个样本 通过这样
  • 在ios系统上实现更改IP地址

    在当今的互联网环境中 我们经常需要更改手机的IP地址来避免一些限制或保护我们的隐私 然而 在iOS系统上 更改IP地址并不像在其他平台上那么容易 因此 本文将分享一种简单的方法 帮助您在iOS系统上免费更改手机的IP地址 在iOS系统上 我
  • html账号不能为空,在HTML5 中,( )属性用于规定输入框填写的内容不能为空,否则不允许用户提交表单。...

    AT89C51单片机串行口的4种工作方式中 中则和的波特率是可调的 与定时器 计数器T1的溢出率有关 另外两种方式的波特率是固定的 协助扩散就是协同运输 属性输入是物质从高浓度侧转运到低浓度侧 不需要消耗能量 用于允许用户Task 2 Fi
  • stm32 hal库接收不定长数据程序

    协议层 串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口 在串口通讯的协议层中 规定了数据包的内容 它由启始位 主体数据 校验位以及停止位组成 通讯双方的数据包格式要约定一致才能正常收发数据 其组成见图 波特
  • HashMap和HashTable的区别(面试题)

    HashMap和HashTable的区别 面试题 概念 HashMap HashTable 对比 总结 概念 HashMap 基于哈希表的 Map 接口的实现 此实现提供所有可选的映射操作 并允许使用 null 值和 null 键 除了非同
  • MySQL创建数据库和创建数据表

    MySQL 创建数据库和创建数据表 MySQL 是最常用的数据库 在数据库操作中 基本都是增删改查操作 简称CRUD 在这之前 需要先安装好 MySQL 然后创建好数据库 数据表 操作用户 一 数据库操作语言 数据库在操作时 需要使用专门的
  • python中time方法,生成当前时间年月日时分秒

    在Python中 可以使用time模块中的strftime 方法结合时间格式化字符串来生成当前的年月日时分秒 下面是一个详细解释的示例代码 import time 获取当前时间的时间戳 current timestamp time time
  • png在ai转为路径_ai怎么把png转换为路径

    1 png格式转为ai格式 解决如何将png图像转换成清晰的ai或者cdr矢量图的步骤如下 1 打开PS软件 打开JPG的图片文件 文件 打开 选择图片存放的路径 找到文件 打开 png 429 230 60238 0 gt 2 这是一个非
  • jvm的启动过程

    一 JVM的装入环境和配置 在学习这个之前 我们需要了解一件事情 就是JDK和JRE的区别 JDK是面向开发人员使用的SDK 它提供了Java的开发环境和运行环境 JDK中包含了JRE JRE是Java的运行环境 是面向所有Java程序的使
  • elasticsearch得分设置以及分词器不同层次定义

    GET cat indices GET hotel search GET search query constant score filter term lvg mc 酒店 boost 1 2 DELETE my index PUT my
  • NLP——机器翻译中的Seq2Seq

    文章目录 框架 简介 Encoder Decoder CNN Seq2Seq Seq2Seq模型缺点 框架 简介 Seq2Seq 全称Sequence to Sequence 序列到序列 它是一种通用的编码器 解码器框架 这个框架最初是为了
  • Python中的MetaPathFinder

    MetaPathFinder 是 Python 导入系统中的一个关键组件 它与 sys meta path 列表紧密相关 sys meta path 是一个包含 MetaPathFinder 实例的列表 这些实例用于自定义模块的查找和加载逻
  • 外汇市场与交易系统读书笔记(1)

    本文为 外汇市场与交易系统 这本书的读书笔记 1 a 汇率报价一般有五个数字 包括小输掉 其中 精度最高到小数点后四位 一般而言 我们以五个数字中的最低位作为基本点 b 外汇即期汇率报价一般包含买入汇率和卖出汇率 例如usd jpy的汇率可
  • 【知识积累】分析并实现O(N^2)的算法(对数器验证)

    1 选择排序 package com example demo algorithm import java util Arrays Description 选择排序 数据规模 N 0 N 1 看 比 交换 1 N 1 看 比 交换 2 N
  • SoC的开发

    怎么做SoC SoC是干啥的 SoC就是将CPU GPU Uart I2C WiFi Etherne等硬件IP连起来 做到一个芯片上 主要工作有 1 用verilog将这些IP core连起来 在verilog仿真器上进行验证 也要写一些C
  • Axure Repeater系列---排序

    最新学习整理Repeater 网上也能找到一些实现排序的帖子 但是对于不熟悉中继器的同学来说 直接上手还是有点难度的 我也遇到一些坑 特整理记录下来 共同学习 学习之前最好了解下中继器的各个属性以及函数的含义 工具 Axure8 0 学习目
  • 使用人声分离在线网站获得音乐

    有时候碰到一个广告中的音乐 觉得非常悦耳 想将它占为己有 使用到自己的片子中 但奈何其中有广告人声 想获得纯的音乐 如何做到呢 本文给出了方法 希望对你有用 注 本教程使用到了几个工具 1 fdm 下载片源 2 视频编辑大师 分离视频中的音
  • MySQL必知必会——第二十章更新和删除数据

    更新和删除数据 本章介绍如何利用UPDATE和DELETE语句进一步操纵表数据 更新数据 为了更新 修改 表中的数据 可以使用UPDATE语句 UPDATE的两种用法 更新表中特定行 更新表中所有行 不要省略WHERE子句 缺少WHERE子