ホームページ >データベース >mysql チュートリアル >mysqlでフィールドの値を変更する方法

mysqlでフィールドの値を変更する方法

青灯夜游
青灯夜游オリジナル
2021-12-02 13:53:1927785ブラウズ

mysql では、UPDATE ステートメントを使用してフィールド値を変更できます。UPDATE ステートメントは、データ テーブル内の 1 つの行、行のグループ、またはすべての行のフィールド値を変更できます。構文 " UPDATE テーブル名 SET フィールド 1 = 値 1[,フィールド 2=値 2...] [WHERE 条件]"。

mysqlでフィールドの値を変更する方法

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql では、UPDATE ステートメントを使用してフィールドの値を変更できます。

UPDATE ステートメントは、テーブル内の既存のデータを更新したり、データ テーブル内の単一行、行のグループ、またはすべての行のフィールド値を変更したりできます。

MySQL UPDATE ステートメントの構文を以下に説明します。

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

上記の UPDATE ステートメント内:

  • まず、UPDATE キーワードの後に​​データを更新するテーブル名を指定します。
  • 2 番目に、SET 句で、変更する列と新しい値を指定します。複数の列を更新するには、カンマ区切りのリストを使用します。各列の割り当てに設定する値をリテラル、式、またはサブクエリとして指定します。
  • 3 番目に、WHERE 句 の条件を使用して、更新する行を指定します。 WHERE 句はオプションです。 WHERE 句が省略された場合、UPDATE ステートメントはテーブル内のすべての行を更新します。

WHERE 句は非常に重要であるため、更新の条件を指定することを忘れないでください。場合によっては、1 つの行のみを変更したい場合がありますが、WHERE 句の記述を忘れて、テーブル内のすべての行が誤って更新される可能性があります。

MySQL は、UPDATE ステートメントで 2 つの修飾子をサポートしています。

  • LOW_PRIORITY 修飾子は、テーブルからデータを読み取るための接続がなくなるまで更新を遅らせるように UPDATE ステートメントに指示します。 LOW_PRIORITYテーブル レベルのロックのみを使用する ストレージ エンジン (MyISAMMERGEMEMORY など) に有効です。 )。
  • IGNORE 修飾子を使用すると、エラーが発生した場合でも UPDATE ステートメントで行の更新を続行できます。エラー (重複キー違反など) の原因となった行は更新されません。

2. MySQL UPDATE の例

MySQL サンプル データベース内のいくつかのテーブルを使用して、UPDATE ステートメントの使用を練習します。

2.1 MySQL の単一列の更新の例

この例では、Mary Patterson の電子メールを新しい電子メールに更新します 123@qq.com

まず、電子メールの更新が成功したことを確認するために、次の SELECT ステートメントを使用して、employees テーブルから Mary の電子メールをクエリします。 <pre class="brush:html;toolbar:false;">SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;</pre>

上記のクエリ ステートメントを実行すると、次の結果が得られます。

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

2 番目のステップ UPDATE ステートメントを使用して Mary## を更新します。 # の電子メールを新しい電子メール : 123@qq.com に送信します。次のクエリに示すように: <pre class="brush:html;toolbar:false;">UPDATE employees SET email = &amp;#39;123@qq.com&amp;#39; WHERE employeeNumber = 1056;</pre>上記のステートメントでは 1 つの行のみを更新するため、次を使用します。更新されたものを指定する

WHERE

句。従業員番号 1056 の行です。 SET 句は、電子メール列の値を新しい電子メールに設定します。

3 番目の

では、SELECT ステートメントを再度実行して、変更を確認します。 <pre class="brush:html;toolbar:false;">SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;</pre>上記のクエリ ステートメントを再度実行すると、次の結果が得られます。

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

2.2 MySQL UPDATE 複数の列

の値を更新するには複数の列の場合、割り当ては

SET

句で指定する必要があります。たとえば、次のステートメントは、従業員番号 1056 の姓と電子メールの列を更新します。 <pre class="brush:html;toolbar:false;">UPDATE employees SET lastname = &amp;#39;Hill&amp;#39;, email = &amp;#39;mary.hill@qq.com&amp;#39; WHERE employeeNumber = 1056;</pre> 上記のステートメントを実行した後、従業員番号

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 = &#39;Sales Rep&#39;
ORDER BY RAND()
LIMIT 1;
customers

テーブルの営業担当者の従業員番号 (

employeeNumber) 列を更新するには、上記のクエリを UPDATE# の最後に配置します。 ## ステートメント SET 句を次のように追加します。 <pre class="brush:html;toolbar:false;">UPDATE customers SET salesRepEmployeeNumber = (SELECT employeeNumber FROM employees WHERE jobtitle = &amp;#39;Sales Rep&amp;#39; LIMIT 1) WHERE salesRepEmployeeNumber IS NULL;</pre>上記の更新ステートメントを実行した後、customers テーブル内のデータをクエリすると、各顧客が営業担当者がいます。つまり、次のクエリは行データを返しません。

SELECT 
     salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;
`

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がmysqlでフィールドの値を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。