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

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のデフォルト設定では、アンダースコアのみで構成されたシンプルなテーブル名であれば、バッククォートなしでも作成できるケースがありますが、予約語との衝突や特殊文字を避けるため、常にバッククォートで囲む習慣をつけておくと安全です。

  1. MySQLで値を挿入する際にカラム名を省略できますか?NULLが自動挿入される仕組みを解説

    MySQLのINSERT文でカラム名をスキップすることは可能? 結論から言うと、はい、可能です。MySQLでは、INSERT文で特定のカラムだけを明示的に指定すれば、指定しなかったカラムには自動的にNULLが挿入されます。実際にサンプルコードを通して、その動きを順番に確認していきましょう。 1. テーブルを作成する まず、以下のコマンドで「DemoTable」というテーブルを作成します。 mysql> create table DemoTable -> ( -> StudentName varchar(100), -> StudentAge i

  2. MySQLのテーブル名にアンダースコアは使える?バッククォートでの作成方法を解説

    はい、MySQLではテーブル名にアンダースコア(_)を含めることが可能です。ポイントは、テーブル名をバッククォート(`)で囲むことです。特殊文字や記号を含む識別子は、バッククォートで明示的に囲むことで正しく認識されます。基本の構文INSERT INTO `テーブル名` VALUES(値1, 値2, ......N);テーブルの作成まず、アンダースコアを含むテーブル「DemoTable_1」を作成してみましょう。mysql> create table `DemoTable_1` ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Lo