MySQLのテーブル名にアンダースコアは使える?バッククォートでの作成方法を解説
はい、MySQLではテーブル名にアンダースコア(_)を含めることが可能です。ポイントは、テーブル名をバッククォート(`)で囲むことです。特殊文字や記号を含む識別子は、バッククォートで明示的に囲むことで正しく認識されます。
基本の構文
INSERT INTO `テーブル名` VALUES(値1, 値2, ......N);
テーブルの作成
まず、アンダースコアを含むテーブル「DemoTable_1」を作成してみましょう。
mysql> create table `DemoTable_1`
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Location varchar(100)
);
Query OK, 0 rows affected (1.17 sec)レコードの挿入
INSERTコマンドを使用して、いくつかのレコードをテーブルに挿入します。
mysql> insert into `DemoTable_1`(Location) values('C:/myFolder/JavaFiles');
Query OK, 1 row affected (0.20 sec)
mysql> insert into `DemoTable_1`(Location) values('E:/AllJarOfJava');
Query OK, 1 row affected (0.17 sec)
mysql> insert into `DemoTable_1`(Location) values('C:/ProgramFiles');
Query OK, 1 row affected (0.17 sec)レコードの表示
SELECT文を実行して、テーブル内のすべてのレコードを確認します。
mysql> select *from `DemoTable_1`;
実行すると、次のような結果が出力されます。
+----+-----------------------+ | Id | Location | +----+-----------------------+ | 1 | C:/myFolder/JavaFiles | | 2 | E:/AllJarOfJava | | 3 | C:/ProgramFiles | +----+-----------------------+ 3 rows in set (0.00 sec)
このように、バッククォートで囲むことで、アンダースコアを含むテーブル名でも問題なくCREATE TABLEやINSERT、SELECTなどの操作が行えます。なお、アンダースコア自体はMySQLの識別子として許可されている文字なので、多くの場合はバッククォートなしでも使用できますが、ハイフン(-)などの特殊文字を含む場合や、予約語との衝突を避けたい場合には必須となります。
-
2つのテーブルに対する単一のMySQL SELECTクエリは可能ですか?
はい、可能です。FROM句にカンマ区切りで複数のテーブル名を指定することで、単一のSELECTクエリで2つのテーブルからデータを取得できます。基本的な構文は以下の通りです。select * from yourTableName1,yourTableName2;なお、この書き方では両テーブルの全行が組み合わされた「クロス結合(直積)」の結果が返される点に注意してください。サンプルテーブルの作成まず、1つ目のテーブルを作成します。mysql> create table DemoTable1 -> ( &nb
-
MySQLテーブルのユーザー名フィールドは「name」「username」「user_name」どれにすべき?適切な命名規則を解説
MySQLテーブルのユーザー名フィールドは「name」「username」「user_name」どれにすべき?適切な命名規則を解説MySQLでテーブルを設計する際、フィールド名にテーブル名をプレフィックス(接頭辞)として付けるのは避けるのが基本です。例えば、userテーブルのフィールドに「user_name」という名前を付けるのではなく、「username」のようにシンプルな名前を使いましょう。テーブル名をプレフィックスとして付けると、SQL文が冗長になるだけでなく、場合によっては曖昧さが生じる原因にもなります。そのため、テーブル名のプレフィックスは避けるのがベストプラクティスとされています。