Heim >Datenbank >MySQL-Tutorial >So ändern Sie den Wert eines Felds in MySQL

So ändern Sie den Wert eines Felds in MySQL

青灯夜游
青灯夜游Original
2021-12-02 13:53:1927783Durchsuche

In MySQL können Sie die UPDATE-Anweisung verwenden, um den Feldwert einer einzelnen Zeile, einer Gruppe von Zeilen oder aller Zeilen in der Datentabelle zu ändern Feld 1 = Wert 1 [, Feld 2=Wert2…][WHERE-Bedingung]".

So ändern Sie den Wert eines Felds in MySQL

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

In MySQL können Sie die UPDATE-Anweisung verwenden, um den Wert eines Feldes zu ändern. Die

UPDATE-Anweisung kann vorhandene Daten in der Tabelle aktualisieren und die Feldwerte einer einzelnen Zeile, einer Gruppe von Zeilen oder aller Zeilen in der Datentabelle ändern.

Die Syntax der MySQL-Anweisung UPDATE ist unten dargestellt: 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;
`

In der obigen UPDATE-Anweisung:

  • Zuerst im UPDATE Geben Sie nach dem Schlüsselwort code> den Namen der Tabelle an, um die Daten zu aktualisieren.
  • Zweitens gibt die SET-Klausel die zu ändernde Spalte und den neuen Wert an. Um mehrere Spalten zu aktualisieren, verwenden Sie eine durch Kommas getrennte Liste. Geben Sie den Wert an, der in jeder Spaltenzuweisung als Literal, Ausdruck oder Unterabfrage festgelegt werden soll.
  • Drittens verwenden Sie die Bedingungen in der WHERE-Klausel, um die zu aktualisierenden Zeilen anzugeben. Die WHERE-Klausel ist optional. Wenn die WHERE-Klausel weggelassen wird, aktualisiert die UPDATE-Anweisung alle Zeilen in der Tabelle.
Bitte beachten Sie, dass die WHERE-Klausel sehr wichtig ist, Sie sollten also nicht vergessen, die Bedingungen für die Aktualisierung anzugeben. Manchmal möchten Sie möglicherweise nur eine Zeile ändern. Möglicherweise vergessen Sie jedoch, die WHERE-Klausel zu schreiben, wodurch versehentlich alle Zeilen in der Tabelle aktualisiert werden. 🎜🎜MySQL unterstützt zwei Modifikatoren in der UPDATE-Anweisung. 🎜
  • Der Modifikator LOW_PRIORITY weist die Anweisung UPDATE an, Aktualisierungen zu verzögern, bis keine Verbindungen mehr zum Lesen von Daten aus der Tabelle bestehen. LOW_PRIORITY wird für 🎜Speicher-Engines🎜 wirksam, die nur Sperren auf Tabellenebene verwenden (z. B. MyISAM, MERGE, MEMORY). >).
  • Der Modifikator IGNORE ermöglicht der UPDATE-Anweisung, die Zeilenaktualisierung auch dann fortzusetzen, wenn ein Fehler auftritt. Zeilen, die Fehler verursachen (z. B. Verstöße gegen doppelte Schlüssel), werden nicht aktualisiert.

2. MySQL UPDATE-Beispiel

🎜Wir verwenden einige Tabellen in der MySQL-Beispieldatenbank, um die Verwendung von UPDATE-Anweisung. 🎜🎜🎜2.1 MySQL-UPDATE-Beispiel für eine einzelne Spalte 🎜🎜🎜In diesem Beispiel aktualisieren wir die E-Mail-Adresse von <em>Mary Patterson</em> auf die neue E-Mail-Adresse <code>123@qq.com. 🎜🎜Um sicherzustellen, dass die aktualisierte E-Mail erfolgreich ist, verwenden Sie zunächst die folgende SELECT-Anweisung, um die E-Mail von Mary aus der Tabelle employees abzufragen: 🎜rrreee🎜Führen Sie die aus obige Abfrageanweisung und erhalten Sie die folgenden Ergebnisse -🎜rrreee🎜🎜Im zweiten Schritt🎜 verwenden Sie die UPDATE-Anweisung, um Marys E-Mail auf die neue E-Mail zu aktualisieren: 123@qq.com, wie in der folgenden Abfrage gezeigt: 🎜rrreee🎜Da Sie in der obigen Anweisung nur eine Zeile aktualisieren möchten, verwenden Sie die WHERE-Klausel, um diese Zeile anzugeben mit Mitarbeiternummer 1056 wird aktualisiert. Die SET-Klausel setzt den Wert der E-Mail-Spalte auf die neue E-Mail. 🎜🎜🎜Drittens🎜: Führen Sie die Anweisung SELECT erneut aus, um die Änderungen zu überprüfen. 🎜rrreee🎜Führen Sie die obige Abfrageanweisung erneut aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreee🎜🎜2.2 MySQL UPDATE mehrere Spalten 🎜🎜🎜Um die Werte in mehreren Spalten zu aktualisieren, müssen Sie die Zuordnung im SET-Klausel. Beispielsweise aktualisiert die folgende Anweisung die Nachnamen- und E-Mail-Spalten der Mitarbeiternummer <code>1056: 🎜rrreee🎜Nachdem Sie die obige Anweisung ausgeführt haben, fragen Sie den Datensatz der Mitarbeiternummer 1056 ab. wie folgt: Show -🎜rrreee🎜🎜2.3 MySQL UPDATE-Beispiel mit SELECT-Anweisung🎜🎜🎜Sie können die SELECT-Anweisung verwenden, um Daten aus anderen Tabellen abzufragen, um den Wert für den SETbereitzustellen > Klausel. 🎜🎜Zum Beispiel haben einige Kunden in der Tabelle Kunden keine Vertriebsmitarbeiter. Der Wert der Spalte salesRepEmployeeNumber ist NULL, wie unten gezeigt: 🎜rrreee🎜Wir können diesen Kunden Vertriebsmitarbeiter und Updates bereitstellen. 🎜🎜Dazu müssen Sie zufällig einen Mitarbeiter mit der Position Vertriebsmitarbeiter aus der Tabelle mitarbeiter auswählen und ihn in die Tabelle mitarbeiter aktualisieren .
Die folgende Abfrageanweisung wählt zufällig einen Mitarbeiter mit der Position Vertriebsmitarbeiter aus der Tabelle employees aus. 🎜rrreee🎜Um die Spalte „Mitarbeiternummer des Vertriebsmitarbeiters“ (employeeNumber) in der Tabelle customers zu aktualisieren, platzieren wir die obige Abfrage in der Anweisung UPDATE. code>SET-Klausel, wie unten gezeigt: 🎜rrreee🎜Wenn Sie die Daten in der Tabelle customers abfragen, nachdem Sie die obige Aktualisierungsanweisung ausgeführt haben, werden Sie sehen, dass jeder Kunde einen Verkaufsrepräsentanten hat. Mit anderen Worten: Die folgende Abfrage gibt keine Zeilendaten zurück. 🎜rrreee🎜【Verwandte Empfehlung: 🎜MySQL-Video-Tutorial🎜】🎜

Das obige ist der detaillierte Inhalt vonSo ändern Sie den Wert eines Felds in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Ist MySQL Open Source?Nächster Artikel:Ist MySQL Open Source?