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月