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

MySQLで名前にドット(.)を含むカラムを更新する方法

MySQLでは、カラム名にドット(.)などの特殊文字が含まれている場合、そのカラム名をバッククォート(`)で囲む必要があります。ドットはテーブル名とカラム名の区切り文字として解釈されるため、そのまま記述すると正しく認識されません。


ここでは、実際にテーブルを作成しながら、ドットを含むカラム名の更新方法を具体的に解説します。


サンプルテーブルの作成


まず、ドットを含むカラム名「User.FirstName.LastName」を持つテーブルを作成します。カラム名はバッククォートで囲んで定義します。


mysql> create table UpdateDemo
    -> (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> `User.FirstName.LastName` varchar(60)
    -> );
Query OK, 0 rows affected (0.54 sec)

このように、テーブル作成の段階でもカラム名をバッククォートで囲む必要がある点に注意してください。


レコードの挿入


次に、INSERT文を使ってテスト用のレコードをいくつか挿入します。


mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('John Smith');
Query OK, 1 row affected (0.14 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Adam Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Carol Taylor');
Query OK, 1 row affected (0.25 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Mitchell Johnson');
Query OK, 1 row affected (0.19 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('David Brown');
Query OK, 1 row affected (0.16 sec)
mysql> insert into UpdateDemo(`User.FirstName.LastName`) values('Larry Miller');
Query OK, 1 row affected (0.22 sec)

レコードの表示


SELECT文ですべてのレコードを表示して確認しましょう。


mysql> select *from UpdateDemo;

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


+--------+-------------------------+
| UserId | User.FirstName.LastName |
+--------+-------------------------+
| 1      | John Smith              |
| 2      | Adam Smith              |
| 3      | Carol Taylor            |
| 4      | Mitchell Johnson        |
| 5      | David Brown             |
| 6      | Larry Miller            |
+--------+-------------------------+
6 rows in set (0.00 sec)

UPDATE文でカラムを更新する


ドット(.)を含むカラム「User.FirstName.LastName」を更新する場合も、カラム名を必ずバッククォートで囲みます。以下は、UserId=5 のレコードの値を「David Miller」に変更する例です。


mysql> update UpdateDemo set `User.FirstName.LastName`='David Miller' where UserId=5;
Query OK, 1 row affected (0.19 sec)
Rows matched: 1 Changed: 1 Warnings: 0

更新結果の確認


もう一度テーブルの内容を確認してみましょう。UserId=5 の行が正常に更新されていることがわかります。


mysql> select *from UpdateDemo;

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


+--------+-------------------------+
| UserId | User.FirstName.LastName |
+--------+-------------------------+
| 1      | John Smith              |
| 2      | Adam Smith              |
| 3      | Carol Taylor            |
| 4      | Mitchell Johnson        |
| 5      | David Miller            |
| 6      | Larry Miller            |
+--------+-------------------------+
6 rows in set (0.00 sec)

まとめ


MySQLでドット(.)を含むカラム名を扱う場合は、SELECT・INSERT・UPDATEなどすべてのSQL文において、カラム名をバッククォート(`)で囲むことが重要なポイントです。これにより、特殊文字を含むカラム名でもエラーなく操作できるようになります。

  1. MySQLでアスタリスク(*)を含むカラム名をSELECTする方法

    結論から言うと、アスタリスク(*)を含むカラム名は、そのまま記述しただけでは正しくSELECTできません。しかし、バッククォート(`` ` ``)でカラム名を囲むことで、問題なく扱うことができます。アスタリスクはMySQLにおいて特別な意味を持つ記号(すべてのカラムを表すワイルドカード)であるため、カラム名として使う場合は必ずバッククォートでエスケープする必要があります。アスタリスクを含むカラムを持つテーブルを作成するまず、`Name*` のようにアスタリスクを含むカラム名を持つテーブルを作成してみましょう。mysql> create table DemoTable -> (

  2. MySQLで重複しない日付(個別の値)を表示する方法

    MySQLでは、datetime型のカラムから「日付のみ」を基準に重複を排除してデータを取得したいケースがよくあります。例えば、同じ日に複数の注文や出荷記録がある場合、日付単位で1件だけ取り出したいときなどです。本記事では、GROUP BYとDATE()関数を組み合わせて、重複しない日付ごとのレコードを表示する方法を解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成しましょう。ここでは、出荷日時(ShippingDate)と顧客名(CustomerName)を持つテーブルを定義します。 mysql> create table DemoTable1996 (