[MySQL/MariaDB] ”update”文でデータ更新

MySQL/MariaDBのデータ更新SQL、「update」文について紹介します。

update」文は、「insert」、

delete」と同様にDML(Data Manipulation Language )と呼ばれ、

データを操作するSQL文になります。

目次

基本構文:update ~ set

update文の基本構文は以下になります。

update <テーブル名>
set
<列名①> = <列①の値>,
<列名②> = <列②の値>,
<列名③> = <列③の値>...
WHERE
<条件>
;

下がサンプルのinsert文になります。

MariaDB [test001]> select *
    ->   from EMPLOYEE;
+-------+-------------+--------+
| EMPNO | NAME        | SALARY |
+-------+-------------+--------+
| 00001 | TARO TANAKA | 300000 |
+-------+-------------+--------+
1 row in set (0.00 sec)

MariaDB [test001]>
MariaDB [test001]> update EMPLOYEE
    -> set
    ->     NAME = 'HANADA YAMADA',
    ->     SALARY = 500000
    -> WHERE
    ->     EMPNO = '00001'
    -> ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [test001]> commit;
Query OK, 0 rows affected (0.00 sec)

MariaDB [test001]>
MariaDB [test001]> select *
    ->   from EMPLOYEE;
+-------+---------------+--------+
| EMPNO | NAME          | SALARY |
+-------+---------------+--------+
| 00001 | HANADA YAMADA | 500000 |
+-------+---------------+--------+
1 row in set (0.00 sec)

別表で取得した列値で更新

別表で取得した列値で更新するのは以下になります。

update <テーブルA>,

       <テーブルB>

set

    <A.列名①> = <B.列名①>

    <A.列名②> = <B.列名②>

    <A.列名③> = <B.列名③>

WHERE

    <条件>

;

下がサンプルのupdate文になります。

以下の例では2つ目の表には副問い合わせを使用しています。

MariaDB [test001]> select *
    ->   from EMPLOYEE;
+-------+-------------+--------+
| EMPNO | NAME        | SALARY |
+-------+-------------+--------+
| 00001 | TARO TANAKA | 300000 |
+-------+-------------+--------+
1 row in set (0.00 sec)

MariaDB [test001]> select *
    ->   from SUB_EMPLOYEE;
+-------+-------------+--------+
| EMPNO | NAME        | SALARY |
+-------+-------------+--------+
| 00001 | ICHIRO SATO | 700000 |
+-------+-------------+--------+
1 row in set (0.00 sec)

MariaDB [test001]> update EMPLOYEE E,
    ->       (select NAME,
    ->               SALARY
    ->         from SUB_EMPLOYEE
    ->        where EMPNO = '00001') SE
    -> set
    ->     E.NAME = SE.NAME,
    ->     E.SALARY = SE.SALARY
    -> WHERE
    ->     EMPNO = '00001'
    -> ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [test001]> commit;
Query OK, 0 rows affected (0.00 sec)

MariaDB [test001]> select *
    ->   from EMPLOYEE;
+-------+-------------+--------+
| EMPNO | NAME        | SALARY |
+-------+-------------+--------+
| 00001 | ICHIRO SATO | 700000 |
+-------+-------------+--------+
1 row in set (0.00 sec)

MariaDB & MySQL全機能バイブルposted with ヨメレバ

鈴木啓修/山田奈緒子 技術評論社 2015年01月

Amazon

Kindle

楽天ブックス

7net

honto

e-hon

紀伊國屋書店

よかったらシェアしてね!
  • URLをコピーしました!
目次