Maison  >  Article  >  base de données  >  Comment modifier la valeur d'un champ dans MySQL

Comment modifier la valeur d'un champ dans MySQL

青灯夜游
青灯夜游original
2021-12-02 13:53:1927753parcourir

Dans MySQL, vous pouvez utiliser l'instruction UPDATE pour modifier la valeur du champ. L'instruction UPDATE peut modifier la valeur du champ d'une seule ligne, d'un groupe de lignes ou de toutes les lignes de la table de données avec la syntaxe "UPDATE nom de la table SET ; champ 1 = valeur 1 [, champ 2=valeur2…][WHERE condition]".

Comment modifier la valeur d'un champ dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Dans MySQL, vous pouvez utiliser l'instruction UPDATE pour modifier la valeur d'un champ. L'instruction

UPDATE peut mettre à jour les données existantes dans la table et modifier les valeurs de champ d'une seule ligne, d'un groupe de lignes ou de toutes les lignes de la table de données.

La syntaxe de l'instruction MySQL UPDATE est illustrée ci-dessous : UPDATE语句的语法:

UPDATE 表名 
SET 
  字段1=值1[,字段2=值2…] 
[WHERE 条件]

在上面UPDATE语句中:

  • 首先,在UPDATE关键字后面指定要更新数据的表名。
  • 其次,SET子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。
  • 第三,使用WHERE子句中的条件指定要更新的行。WHERE子句是可选的。 如果省略WHERE子句,则UPDATE语句将更新表中的所有行。

请注意,WHERE子句非常重要,所以不应该忘记指定更新的条件。 有时,您可能只想改变一行; 但是,可能会忘记写上WHERE子句,导致意外更新表中的所有行。

MySQL在UPDATE语句中支持两个修饰符。

  • LOW_PRIORITY修饰符指示UPDATE语句延迟更新,直到没有从表中读取数据的连接。 LOW_PRIORITY对仅使用表级锁定的存储引擎(例如MyISAMMERGEMEMORY)生效。
  • 即使发生错误,IGNORE修饰符也可以使UPDATE语句继续更新行。导致错误(如重复键冲突)的行不会更新。

2. MySQL UPDATE示例

我们使用MySQL示例数据库中的一些表来练习使用UPDATE语句。

2.1 MySQL UPDATE一个单列示例

在这个例子中,我们将把 Mary Patterson 的电子邮件更新为新的电子邮件123@qq.com

首先,为了确保更新电子邮件成功,使用以下SELECT语句从employees表查询Mary的电子邮件:

SELECT 
    firstname, lastname, email
FROM
    employees
WHERE
    employeeNumber = 1056;

执行上面的查询语句,得到以下结果 -

+-----------+-----------+----------------------+
| firstname | lastname  | email                |
+-----------+-----------+----------------------+
| Mary      | Patterson | mpatterso@qq.com     |
+-----------+-----------+----------------------+
1 row in set

第二步,使用UPDATE语句将Mary的电子邮件更新为新的电子邮件:123@qq.com,如下查询所示:

UPDATE employees 
SET 
    email = '123@qq.com'
WHERE
    employeeNumber = 1056;

因为上面语句中,只想更新一行,所以使用WHERE子句来指定更新的是员工编号1056的行。SET子句将电子邮件列的值设置为新的电子邮件。

第三,再次执行SELECT语句来验证更改。

SELECT 
    firstname, lastname, email
FROM
    employees
WHERE
    employeeNumber = 1056;

再次执行上面的查询语句,得到以下结果 -

+-----------+-----------+---------------------+
| firstname | lastname  | email               |
+-----------+-----------+---------------------+
| Mary      | Patterson | 123@qq.com          |
+-----------+-----------+---------------------+
1 row in set

2.2 MySQL UPDATE多列

要更新多列中的值,需要在SET子句中指定分配。例如,以下语句更新了员工编号1056的姓氏和电子邮件列:

UPDATE employees 
SET 
    lastname = 'Hill',
    email = 'mary.hill@qq.com'
WHERE
    employeeNumber = 1056;

在执行上面语句之后,查询员工编号为:1056的记录,如下所示 -

+-----------+----------+----------------------+
| firstname | lastname | email                |
+-----------+----------+----------------------+
| Mary      | Hill     | mary.hill@qq.com     |
+-----------+----------+----------------------+
1 row in set

2.3 使用SELECT语句的MySQL UPDATE示例

可以使用SELECT语句查询来自其他表的数据来提供给SET子句的值。

例如,在customers表中,有些客户没有任何销售代表。 salesRepEmployeeNumber列的值为NULL,如下所示:

mysql> SELECT 
    customername, salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;
+--------------------------------+------------------------+
| customername                   | salesRepEmployeeNumber |
+--------------------------------+------------------------+
| Havel & Zbyszek Co             | NULL                   |
| Porto Imports Co.              | NULL                   |
| Asian Shopping Network, Co     | NULL                   |
| Natrlich Autos                 | NULL                   |
| ANG Resellers                  | NULL                   |
| Messner Shopping Network       | NULL                   |
| Franken Gifts, Co              | NULL                   |
| BG&E Collectables              | NULL                   |
| Schuyler Imports               | NULL                   |
| Der Hund Imports               | NULL                   |
| Cramer Spezialitten, Ltd       | NULL                   |
| Asian Treasures, Inc.          | NULL                   |
| SAR Distributors, Co           | NULL                   |
| Kommission Auto                | NULL                   |
| Lisboa Souveniers, Inc         | NULL                   |
| Stuttgart Collectable Exchange | NULL                   |
| Feuer Online Stores, Inc       | NULL                   |
| Warburg Exchange               | NULL                   |
| Anton Designs, Ltd.            | NULL                   |
| Mit Vergngen & Co.             | NULL                   |
| Kremlin Collectables, Co.      | NULL                   |
| Raanan Stores, Inc             | NULL                   |
+--------------------------------+------------------------+
22 rows in set

我们可以为这些客户提供销售代表和更新。

为此,需要从employees表中随机选择一个职位为Sales Rep的雇员,并将其更新到employees表中。
下面的查询语句是从employees表中随机选择一个其职位是Sales Rep的员工。

SELECT 
    employeeNumber
FROM
    employees
WHERE
    jobtitle = 'Sales Rep'
ORDER BY RAND()
LIMIT 1;

要更新customers表中的销售代表员工编号(employeeNumber)列,我们将上面的查询放在UPDATE语句的SET子句中,如下所示:

UPDATE customers 
SET 
    salesRepEmployeeNumber = (SELECT 
            employeeNumber
        FROM
            employees
        WHERE
            jobtitle = 'Sales Rep'
        LIMIT 1)
WHERE
    salesRepEmployeeNumber IS NULL;

如果在执行上面更新语句后,查询customers

SELECT 
     salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;
`

Dans l'instruction UPDATE ci-dessus :

  • Tout d'abord, dans le UPDATE Après le mot-clé code>, précisez le nom de la table pour mettre à jour les données.
  • Deuxièmement, la clause SET précise la colonne à modifier et la nouvelle valeur. Pour mettre à jour plusieurs colonnes, utilisez une liste séparée par des virgules. Fournissez la valeur à définir dans l'affectation de chaque colonne en tant que littéral, expression ou sous-requête.
  • Troisièmement, utilisez les conditions de la Clause WHERE pour spécifier les lignes à mettre à jour. La clause WHERE est facultative. Si la clause WHERE est omise, l'instruction UPDATE met à jour toutes les lignes de la table.
Veuillez noter que la clause WHERE est très importante, il ne faut donc pas oublier de préciser les conditions de la mise à jour. Parfois, vous souhaiterez peut-être modifier une seule ligne ; cependant, vous risquez d'oublier d'écrire la clause WHERE, ce qui entraînera la mise à jour accidentelle de toutes les lignes de la table. 🎜🎜MySQL prend en charge deux modificateurs dans l'instruction UPDATE. 🎜
  • Le modificateur LOW_PRIORITY demande à l'instruction UPDATE de retarder les mises à jour jusqu'à ce qu'il n'y ait plus de connexions pour lire les données de la table. LOW_PRIORITY prend effet pour les 🎜moteurs de stockage🎜 qui utilisent uniquement le verrouillage au niveau des tables (tels que MyISAM, MERGE, MEMORY).
  • Le modificateur IGNORE permet à l'instruction UPDATE de continuer à mettre à jour les lignes même si une erreur se produit. Les lignes provoquant des erreurs (telles que des violations de clés en double) ne sont pas mises à jour.

2. Exemple MySQL UPDATE

🎜Nous utilisons certaines tables de l'exemple de base de données MySQL pour nous entraîner à utiliser UPDATE<.> instruction. 🎜🎜🎜2.1 MySQL UPDATE, un exemple d'une seule colonne 🎜🎜🎜Dans cet exemple, nous mettrons à jour l'e-mail de <em>Mary Patterson</em> vers le nouvel e-mail <code>123@qq.com . 🎜🎜Tout d'abord, afin de vous assurer que l'e-mail mis à jour réussit, utilisez l'instruction SELECT suivante pour interroger l'e-mail de Mary à partir de la table employés : 🎜rrreee🎜Exécutez le ci-dessus et obtenez les résultats suivants -🎜rrreee🎜🎜La deuxième étape🎜, utilisez l'instruction UPDATE pour mettre à jour l'e-mail de Mary vers le nouvel e-mail : 123@qq.com, comme indiqué dans la requête suivante : 🎜rrreee🎜Étant donné que dans l'instruction ci-dessus, vous souhaitez uniquement mettre à jour une ligne, utilisez la clause WHERE pour spécifier que la ligne avec le numéro d'employé 1056 est mis à jour. La clause SET définit la valeur de la colonne email sur le nouvel e-mail. 🎜🎜🎜Troisièmement🎜, exécutez à nouveau l'instruction SELECT pour vérifier les modifications. 🎜rrreee🎜Exécutez à nouveau l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜rrreee🎜🎜2.2 MySQL UPDATE plusieurs colonnes 🎜🎜🎜Pour mettre à jour les valeurs dans plusieurs colonnes, vous devez spécifier l'allocation dans le SET. Par exemple, l'instruction suivante met à jour les colonnes nom de famille et e-mail du numéro d'employé <code>1056 : 🎜rrreee🎜Après avoir exécuté l'instruction ci-dessus, interrogez l'enregistrement du numéro d'employé : 1056, comme suit Afficher -🎜rrreee🎜🎜2.3 Exemple MySQL UPDATE utilisant l'instruction SELECT🎜🎜🎜Vous pouvez utiliser l'instruction SELECT pour interroger les données d'autres tables afin de fournir la valeur au SET clause. 🎜🎜Par exemple, dans le tableau clients, certains clients n'ont pas de commercial. La valeur de la colonne salesRepEmployeeNumber est NULL comme indiqué ci-dessous : 🎜rrreee🎜Nous pouvons fournir des commerciaux et des mises à jour à ces clients. 🎜🎜Pour ce faire, vous devez sélectionner au hasard un employé avec le poste Représentant commercial dans la table employés et le mettre à jour vers la table employés. .
L'instruction de requête suivante sélectionne de manière aléatoire un employé dont le poste est Représentant commercial dans la table employés. 🎜rrreee🎜Pour mettre à jour la colonne numéro d'employé du représentant commercial (employeeNumber) dans la table clients, nous plaçons la requête ci-dessus dans l'instruction UPDATE. code>SET, comme indiqué ci-dessous : 🎜rrreee🎜Si vous interrogez les données dans la table clients après avoir exécuté l'instruction de mise à jour ci-dessus, vous verrez que chaque client a un chiffre d'affaires. En d’autres termes, la requête suivante ne renvoie aucune donnée de ligne. 🎜rrreee🎜【Recommandations associées : 🎜tutoriel vidéo mysql🎜】🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:MySQL est-il open source ?Article suivant:MySQL est-il open source ?