MySQLのテーブル名にアンダースコア(_)を使う方法:バッククォートの正しい使い方
MySQLのテーブル名にアンダースコアは使える?
MySQLでは、テーブル名にアンダースコア(_)を含めることができます。ただし、そのまま記述するとエラーになる場合があるため、テーブル名をバッククォート(`)で囲む必要があります。注意すべき点として、シングルクォート(')で囲むことはできません。シングルクォートは文字列リテラルを表すため、構文エラーが発生します。
失敗例:シングルクォートで囲んだ場合
まず、アンダースコアを含むテーブル名をシングルクォートで囲んで作成してみましょう。以下がその例です。
mysql> create table 'Demo_Table725'(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientAge int,
ClientCountryName varchar(100),
isMarried boolean
);このSQLを実行すると、バッククォートを使用していないため、次のような構文エラーが出力されます。
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 ''Demo_Table725' ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName v' at line 1
成功例:バッククォートで囲んだ場合
次に、同じテーブルをバッククォートで囲んで作成し直してみます。
mysql> create table `Demo_Table725`(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientAge int,
ClientCountryName varchar(100),
isMarried boolean
);
Query OK, 0 rows affected (0.58 sec)今度は「Query OK」と表示され、テーブルが正常に作成されました。
レコードの挿入
INSERTコマンドを使って、作成したテーブルにレコードを挿入します。ここでもテーブル名はバッククォートで囲みます。
mysql> insert into `Demo_Table725`(ClientName,ClientAge,ClientCountryName,isMarried) values('John',34,'US',true);
Query OK, 1 row affected (0.40 sec)
mysql> insert into `Demo_Table725`(ClientName,ClientAge,ClientCountryName,isMarried) values('Chris',28,'UK',false);
Query OK, 1 row affected (0.25 sec)レコードの確認
SELECT文を使って、テーブル内のすべてのレコードを表示します。
mysql> select *from `Demo_Table725`;
実行結果は以下のとおりです。
+----------+------------+-----------+-------------------+-----------+ | ClientId | ClientName | ClientAge | ClientCountryName | isMarried | +----------+------------+-----------+-------------------+-----------+ | 1 | John | 34 | US | 1 | | 2 | Chris | 28 | UK | 0 | +----------+------------+-----------+-------------------+-----------+ 2 rows in set (0.00 sec)
まとめ
MySQLでアンダースコアを含むテーブル名を作成する場合は、バッククォート(`)でテーブル名を囲むのがポイントです。シングルクォート(')やダブルクォート(")を使うと構文エラーになるため注意しましょう。なお、MySQLのデフォルト設定では、アンダースコアのみで構成されたシンプルなテーブル名であれば、バッククォートなしでも作成できるケースがありますが、予約語との衝突や特殊文字を避けるため、常にバッククォートで囲む習慣をつけておくと安全です。
-
MySQLで値を挿入する際にカラム名を省略できますか?NULLが自動挿入される仕組みを解説
MySQLのINSERT文でカラム名をスキップすることは可能? 結論から言うと、はい、可能です。MySQLでは、INSERT文で特定のカラムだけを明示的に指定すれば、指定しなかったカラムには自動的にNULLが挿入されます。実際にサンプルコードを通して、その動きを順番に確認していきましょう。 1. テーブルを作成する まず、以下のコマンドで「DemoTable」というテーブルを作成します。 mysql> create table DemoTable -> ( -> StudentName varchar(100), -> StudentAge i
-
MySQLのテーブル名にアンダースコアは使える?バッククォートでの作成方法を解説
はい、MySQLではテーブル名にアンダースコア(_)を含めることが可能です。ポイントは、テーブル名をバッククォート(`)で囲むことです。特殊文字や記号を含む識別子は、バッククォートで明示的に囲むことで正しく認識されます。基本の構文INSERT INTO `テーブル名` VALUES(値1, 値2, ......N);テーブルの作成まず、アンダースコアを含むテーブル「DemoTable_1」を作成してみましょう。mysql> create table `DemoTable_1` ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Lo