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

【MySQL】UPDATE文のSET句でバッククォートが機能しない原因と正しい使い方

バッククォートは正しく記述すれば機能します

MySQLでは、テーブル名やカラム名などの識別子をバッククォート(`)で囲むことができます。UPDATE文のSET句も例外ではなく、以下のような正しい構文で記述すれば、バッククォートは問題なく機能します。もし動作しない場合は、シングルクォート(')とバッククォート(`)を混同しているなど、記述側のミスが原因であることがほとんどです。

update `yourTableName` set `yourTableName`.`yourColumnName`='yourNewValue' where yourCondition;

それでは、実際のサンプルを使って動作を確認してみましょう。

サンプルテーブルの作成

まず、以下のクエリでテーブルを作成します。

mysql> create table `DemoTable_1401`
    -> (
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (0.52 sec)

レコードの挿入

INSERT文を使って、テーブルにいくつかのレコードを登録します。

mysql> insert into `DemoTable_1401` values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into `DemoTable_1401` values('David');
Query OK, 1 row affected (0.10 sec)
mysql> insert into `DemoTable_1401` values('Bob');
Query OK, 1 row affected (0.12 sec)

レコードの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select * from `DemoTable_1401`;

このクエリを実行すると、次のような出力が得られます。

+-------+
| Name  |
+-------+
| Chris |
| David |
| Bob   |
+-------+
3 rows in set (0.00 sec)

バッククォートを使ったUPDATE文の実行

続いて、バッククォートを使用したUPDATE文を実行します。「テーブル名.カラム名」の形式で、両方ともバッククォートで囲んでいる点に注目してください。

mysql> update `DemoTable_1401` set `DemoTable_1401`.`Name`='Adam' where `Name`='David';
Query OK, 1 row affected (0.15 sec)
Rows matched: 1  Changed: 1 Warnings: 0

更新結果の確認

もう一度テーブルの中身を確認してみましょう。

mysql> select * from `DemoTable_1401`;

実行結果は次のとおりです。

+-------+
| Name  |
+-------+
| Chris |
| Adam  |
| Bob   |
+-------+
3 rows in set (0.00 sec)

このように、「David」だったレコードが「Adam」へ正しく更新されました。バッククォートはあくまで識別子を囲むための記号であり、'Adam' や 'David' のような文字列リテラルにはシングルクォートを使用します。この2つを混同すると構文エラーや予期しない動作の原因になるため、SET句でバッククォートがうまく機能しない場合は、まずこの区別を見直してみてください。

  1. 【MySQL】全レコードを一括更新して先頭の文字だけ大文字にし、残りを小文字に変換するクエリ

    はじめに MySQLでは、カラム内の文字列の先頭の文字だけを大文字にし、残りの文字をすべて小文字に変換したいケースがあります。本記事では、CONCAT()、UPPER()、LOWER()、LEFT()、SUBSTRING()といった文字列関数を組み合わせたUPDATEクエリを使って、テーブル内のすべてのレコードを一括更新する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable2017 -> ( -> Name text -> ); Query OK, 0 rows

  2. MySQLクエリで列名にエイリアス(別名)を設定する方法

    MySQLでは、SELECT文を使って列名に「エイリアス(別名)」を設定できます。エイリアスを利用すると、出力結果の見出しをわかりやすい名前に変更でき、レポート作成やアプリケーションでのデータ表示が格段に読みやすくなります。列名にエイリアスを設定する基本構文SELECT yourColumnName1 anyAliasName1, yourColumnName2 anyAliasName2FROM yourTableName anyAliasName;このように、列名の後にスペースを空けて任意の別名を記述するだけで、その列の表示名がエイリアスに置き換わります。テーブル名にも同様にエイリアスを設