MySQLのSET句で予約語「ADD」列の値をインクリメントする方法
はじめに
MySQLでは「ADD」は予約語として登録されているため、列名に使用する際はバッククォート(`` `ADD` ``)で囲む必要があります。本記事では、実際にテーブルを作成し、「ADD」という名前の列の値をUPDATE文とSET句を使ってインクリメントする手順を解説します。
サンプルテーブルの作成
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable779 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`ADD` int
);
Query OK, 0 rows affected (0.47 sec)
列名「ADD」が予約語であるため、バッククォートで囲んで定義している点に注目してください。
データの挿入
次に、INSERTコマンドでいくつかのレコードを挿入します。
mysql> insert into DemoTable779(`ADD`) values(54);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable779(`ADD`) values(89);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable779(`ADD`) values(66);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable779(`ADD`) values(58);
Query OK, 1 row affected (0.10 sec)
レコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable779;
実行結果は以下の通りです。
+----+------+
| Id | ADD |
+----+------+
| 1 | 54 |
| 2 | 89 |
| 3 | 66 |
| 4 | 58 |
+----+------+
4 rows in set (0.00 sec)
SET句で「ADD」列の値をインクリメントする
UPDATE文のSET句で「`ADD` = `ADD` + 10」と記述することで、すべての行の値を一度に10ずつ増やすことができます。
mysql> update DemoTable779
set `ADD`=`ADD`+10;
Query OK, 4 rows affected (0.20 sec)
Rows matched: 4 Changed: 4 Warnings: 0
更新結果の確認
もう一度テーブルの内容を確認しましょう。
mysql> select *from DemoTable779;
実行結果:
+----+------+
| Id | ADD |
+----+------+
| 1 | 64 |
| 2 | 99 |
| 3 | 76 |
| 4 | 68 |
+----+------+
4 rows in set (0.00 sec)
すべての行の「ADD」列の値が10ずつ増加していることが確認できます。
まとめ
MySQLで予約語を列名として使う場合は、必ずバッククォートで囲みます。インクリメントのような演算も「SET 列名 = 列名 + 増分」の形式で簡単に行えます。WHERE句を追加すれば特定の行だけを更新することも可能なので、用途に応じて活用してください。
-
MySQLでJSON型カラムにデフォルト値を設定する方法
MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,
-
MySQLのAUTO_INCREMENTとは?自動採番と初期値の設定方法をわかりやすく解説
AUTO_INCREMENT属性の基本MySQLのAUTO_INCREMENT属性は、新しい行に対して一意の識別子(連番)を自動的に生成するために使用されます。カラムが「NOT NULL」として宣言されている場合、そのカラムにNULLを代入することで、連番のシーケンスを生成することが可能です。AUTO_INCREMENTカラムに任意の値を挿入すると、そのカラムは指定した値に設定され、同時にシーケンスもリセットされます。以降は、挿入された最大値を起点として、連続した値が自動的に生成されていきます。また、既存のAUTO_INCREMENTカラムを更新した場合も、AUTO_INCREMENTのシーケ