MySQLの識別子(テーブル名・フィールド名)は引用符ありとなしのどちらでも使える?予約語の扱い方を解説
MySQLにおける識別子の引用符(バッククォート)とは
MySQLでは、テーブル名、ストアドプロシージャ名、ビュー名、カラム名などの識別子を、バッククォート(`)で囲んで引用するかどうかを選択できます。通常の名前であれば引用符は不要ですが、識別子が予約語(reserved keyword)に該当する場合は必ず引用符で囲む必要があります。囲まなかった場合、SQL構文エラーが発生します。
例えば「INT」「SELECT」「VARCHAR」などはMySQLの予約語なので、そのままカラム名として使用することはできません。以下では、実際に予約語をカラム名として使う例を見ていきましょう。
サンプルテーブルの作成
まず、カラム名にあえて予約語を使ったテーブルを作成します。バッククォートで囲むことで、正常に作成できることがわかります。
mysql> create table `INT` (`select` int, `varchar` varchar(100)); Query OK, 0 rows affected (0.50 sec)
このように、テーブル名の「INT」もカラム名の「select」や「varchar」も、すべて予約語であるため引用符で囲んでいます。
レコードの挿入
次に、INSERTコマンドを使ってテーブルにデータを挿入します。ここでも予約語を引用符で囲む必要があります。
mysql> insert into `INT` values(1, 'MySQL'); Query OK, 1 row affected (0.14 sec) mysql> insert into `INT` values(2, 'MongoDB'); Query OK, 1 row affected (0.34 sec) mysql> insert into `INT` values(3, 'Java'); Query OK, 1 row affected (0.15 sec) mysql> insert into `INT` values(4, 'C'); Query OK, 1 row affected (0.19 sec)
レコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from `INT`;
実行結果は以下の通りです。
+--------+---------+ | select | varchar | +--------+---------+ | 1 | MySQL | | 2 | MongoDB | | 3 | Java | | 4 | C | +--------+---------+ 4 rows in set (0.00 sec)
まとめ
MySQLの識別子は基本的に引用符なしで記述できますが、予約語と同じ名前を使いたい場合はバッククォートでの引用が必須です。エラーを避けるためにも、予約語を使用する場面では必ず `` ` `` で囲む習慣をつけておくと安全です。なお、可読性や保守性の観点から、可能であれば予約語と重複しない名前を識別子に採用することが推奨されます。
-
MySQL WorkbenchでタイムスタンプフィールドにNOW()を適用する方法
はじめにMySQLでは、NOW()関数を使うことで、レコード挿入時点の現在日時をタイムスタンプ型のカラムに簡単に設定できます。この記事では、MySQL Workbench上でタイムスタンプフィールドにNOW()を適用する具体的な手順を、サンプルコード付きで解説します。1. テーブルを作成するまず、タイムスタンプ型のカラムを持つテーブルを作成します。create table DemoTable( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, ShippingDat
-
MySQLでTIMESTAMP型のカラムを持つテーブルを作成する方法
MySQLでは、TIMESTAMPキーワードを使用することで、日時を自動的に記録するカラムを持つテーブルを簡単に作成できます。TIMESTAMP型に「DEFAULT CURRENT_TIMESTAMP」を指定すると、レコード挿入時の現在日時が自動的に設定されるため、作成日時や更新日時の管理に非常に便利です。1. TIMESTAMPカラムを持つテーブルを作成するまず、CREATE TABLE文でTIMESTAMP型のカラムを含むテーブルを作成します。mysql> create table demo50 -> ( -> id int not null auto_increment