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

CREATE TABLE文で列名に「When」を使用することはできますか?

まずは、CREATE TABLEステートメントで「when」をそのまま列名として使用しようとするとどうなるか、試してみましょう。

mysql> create table DemoTable693(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(100),
    When datetime
);

実行すると、以下のように構文エラーが表示されます。

ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'When datetime at line 5

このエラーは、「When」がMySQLの予約語であるために発生します。予約語を列名として使用したい場合は、バッククォート(`)で囲む必要があります。例えば `when` のように記述します。

バッククォートを使ってテーブルを作成する

それでは、バッククォートで列名を囲んで、同じテーブルを作成してみましょう。

mysql> create table DemoTable693 (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(100),
    `When` datetime
);
Query OK, 0 rows affected (0.63 sec)

今度はエラーが発生せず、テーブルが正常に作成されました。

レコードの挿入

続いて、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable693(StudentName,`When`) values('Chris',NOW());
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable693(StudentName,`When`) values('Robert',CURDATE());
Query OK, 1 row affected (0.22 sec)

レコードの確認

SELECTステートメントを実行して、テーブル内のすべてのレコードを表示してみます。

mysql> select *from DemoTable693;

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

+-----------+-------------+---------------------+
| StudentId | StudentName | When                |
+-----------+-------------+---------------------+
| 1         | Chris       | 2019-07-21 18:57:19 |
| 2         | Robert      | 2019-07-21 00:00:00 |
+-----------+-------------+---------------------+
2 rows in set (0.00 sec)

まとめ

MySQLでは「When」のような予約語も、バッククォートで囲むことで列名として使用できます。ただし、SQL文の可読性や保守性を考えると、予約語との混同を避けるため、可能であれば別の列名を選ぶことをおすすめします。どうしても予約語を使いたい場合のみ、バッククォートによるエスケープを活用しましょう。

  1. MySQLのカラム名に予約語「index」は使用できる?バッククォートの正しい使い方を解説

    MySQLのカラム名に予約語「index」は使用できる? 結論から言うと、使用できます。ただし、「index」はMySQLの予約語であるため、カラム名として使う際にはバッククォート(`)で囲む必要があります。バッククォートで囲むことで、MySQLがキーワードと識別子(カラム名)を正しく区別できるようになり、エラーを回避できます。 「index」という単語は、インデックスの作成などに関わる重要なキーワードとしてMySQLに登録されているため、そのまま記述すると構文エラーが発生する可能性があります。以下、具体的な手順を見ていきましょう。 1. テーブルを作成する まず、予約語「index」をカラム

  2. MySQL 8で「rank」を列名として使える?予約語エラーの原因とバッククォートでの解決法

    MySQLでは、RANKはバージョン8.0.2から定義されている予約語(reserved word)です。そのため、「rank」をそのまま列名として使用することはできず、SQL構文エラーが発生します。この問題を回避するには、列名をバッククォート(`)で囲む必要があります。本記事では、実際にエラーが発生する例と、バッククォートを使った正しいテーブル作成・データ操作の手順を解説します。1. 動作環境の確認まず、使用しているMySQLのバージョンを確認しましょう。ここではMySQL 8.0.12を使用しています。mysql> select version(); +-----------+ |