MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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句を追加すれば特定の行だけを更新することも可能なので、用途に応じて活用してください。

  1. 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,

  2. MySQLのAUTO_INCREMENTとは?自動採番と初期値の設定方法をわかりやすく解説

    AUTO_INCREMENT属性の基本MySQLのAUTO_INCREMENT属性は、新しい行に対して一意の識別子(連番)を自動的に生成するために使用されます。カラムが「NOT NULL」として宣言されている場合、そのカラムにNULLを代入することで、連番のシーケンスを生成することが可能です。AUTO_INCREMENTカラムに任意の値を挿入すると、そのカラムは指定した値に設定され、同時にシーケンスもリセットされます。以降は、挿入された最大値を起点として、連続した値が自動的に生成されていきます。また、既存のAUTO_INCREMENTカラムを更新した場合も、AUTO_INCREMENTのシーケ