MySQLで予約語「from」「to」をカラム名として使う方法|バッククォートでの作成とSELECT文による取得手順を解説
はじめに
MySQLでは、「FROM」や「TO」のような予約語(リザーブドワード)をそのままカラム名として使用することはできません。これらをカラム名に使いたい場合は、バッククォート(`)で囲む必要があります。
本記事では、バッククォートを使って「from」「to」というカラム名を持つテーブルを作成し、それらをSELECT文で正しく取得する方法を、実際のSQL例とともにわかりやすく解説します。
予約語をカラム名にするにはバッククォートが必要
まず、予約語をカラム名として扱うには、次のようにバッククォートで囲んで定義します。
`from`
`to`
そして、このようにバッククォート付きで定義したカラムを選択したい場合は、以下のようにSELECT文でも同様にバッククォートで囲む必要があります。
select `to`,`from` from テーブル名;
実際にテーブルを作成してみよう
それでは、「from」と「to」をバッククォートで囲んだカラム名として持つテーブルを作成してみましょう。
mysql> create table DemoTable720 (
`from` date,
`to` date
);
Query OK, 0 rows affected (0.69 sec)
テーブルが正常に作成されました。次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into DemoTable720 values('2019-01-21','2019-07-23');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable720 values('2017-11-01','2018-01-31');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable720 values('2015-08-11','2016-09-19');
Query OK, 1 row affected (0.12 sec)挿入したレコードの確認
SELECT文を使って、テーブル内のすべてのレコードを表示してみます。
mysql> select *from DemoTable720;
実行結果は以下の通りです。
+------------+------------+
| from | to |
+------------+------------+
| 2019-01-21 | 2019-07-23 |
| 2017-11-01 | 2018-01-31 |
| 2015-08-11 | 2016-09-19 |
+------------+------------+
3 rows in set (0.00 sec)
「to」と「from」カラムを選択するクエリ
それでは本題である、「to」と「from」カラムを選択するクエリを見ていきましょう。ポイントは、カラム名を必ずバッククォートで囲むことです。
mysql> select `to`,`from` from DemoTable720;
実行すると、以下の出力が得られます。
+------------+------------+
| to | from |
+------------+------------+
| 2019-07-23 | 2019-01-21 |
| 2018-01-31 | 2017-11-01 |
| 2016-09-19 | 2015-08-11 |
+------------+------------+
3 rows in set (0.00 sec)
まとめ
MySQLで「from」や「to」などの予約語をカラム名として使用する場合は、テーブル作成時だけでなく、SELECT文などのクエリでも必ずバッククォートで囲む必要があります。バッククォートを忘れると構文エラーが発生するため注意しましょう。なお、予約語をカラム名に使うことは避けられるのであれば、それが最も安全な設計と言えます。
-
MySQLストアドプロシージャでSELECT INTOを使ってテーブルからOUTパラメータにデータを読み込む方法
MySQLのストアドプロシージャでテーブルからデータを読み取り、OUTパラメータに格納するには、SELECT INTO構文を使用します。この記事では、テーブルの作成からストアドプロシージャの呼び出しまで、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1860 ( Amount int ); Query OK, 0 rows affected (0.00 sec) 2. レコードの挿入 INSERTコマンドを使用して、テーブルにい
-
mysqlshowコマンドでMySQLのデータベース・テーブル・列の情報を確認する方法
mysqlshowクライアントを使うと、システム上に存在するデータベースの一覧や、各データベースに含まれるテーブル、さらに特定のテーブルの列やインデックスの情報を簡単に確認できます。mysqlshowは、複数のSQL SHOWステートメントをコマンドラインから実行できる便利なインターフェースを提供するツールです。 mysqlshowの起動方法 mysqlshowユーティリティは、以下の形式で実行します。 shell> mysqlshow [options] [db_name [tbl_name [col_name]]] 引数の指定内容によって、表示される情報が変わります。 データベース