Open Source WEB

さて、バッククォート(`) は入力しなかったのに、 SHOW の表示に含まれていた。 今回は、このバッククォートが何なのかを調べよう。

オンラインマニュアルの索引 を見てみよう。もちろん、英文の方である。

最初に Symbols、つまり「記号」があるので、 この中からバッククォートを探すのだが、ちょっと判別しづらい。 でも、何とか `, Database, Table, Index, Column, and Alias Names を見つけることができた。

日本語のページも存在して、英語と日本語のページが現状ではきちんとは 対応していないことが分かるだろう。

このページは、 データベース名、テーブル名、インデックス名、カラム名、エイリアス名 について記述している。 この中で、バッククォートについて説明してある個所を探すと、

The identifier quote character is the backtick (‘`’):

識別子が予約語である場合や、 識別子に特殊文字が含まれている場合は、 引用符として使用したバッククォート(「`」)文字で その識別子を必ず囲む必要があります。

mysql> SELECT * FROM `select` WHERE `select`.id > 100;

の個所がある。

なるほど、データベース名、テーブル名、カラム名などに 予約語をどうしても使いたい場合には、 バッククォートで囲めば良いらしい。

「特殊文字が含まれている‥」部分は英語には今はない。 過去にあったかどうかも知らない。

それで、最も信頼できると言われている参考書である "MySQL, Second Edition", by Paul DuBois, Sams Publishing を開いてみた。 (現在は、 MySQL,3rd Edition になっているが、まだ私は揃えていない。)

それの101ページには、

you can include other characters within a name or use reserved words by enclosing the name within backtick('`') characters.

という一節が出てくる。要するに、これは、日本語マニュアルに一致する。


予約語と一致するデータベース名

では、さっそく、予約語と一致するデータベース名について、 上記の通りかどうか調べてみよう。

mysql> CREATE DATABASE CREATE;
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 'CREATE' at line 1
mysql>

予約語と一致するデータベース名を指定すると、ちゃんとエラーになる。 でも、

mysql> CREATE DATABASE `CREATE`;
Query OK, 1 row affected (0.00 sec)
 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| CREATE             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
 
mysql>

という訳で、バッククォートで囲むと、予約語と一致するデータベースも 作成できる。


数字だけのデータベース名

数字だけのデータベース名が作れるだろうか?

mysql> CREATE DATABASE 2005;
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 '2005' at line 1
mysql>

となって駄目なのである。しかし、

mysql> CREATE DATABASE `2005`;
Query OK, 1 row affected (0.00 sec)
 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 2005               |
| CREATE             |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.08 sec)
 
mysql>

となり、バッククォートで囲むと、数字だけのデータベース名が可能となる。

ということで、バッククォートで囲むと、 今までエラーになっていたデータベース名が可能になるようだ。


戻る:SHOW CREATE DATABASEの出力中の`は何だろう

次へ:データベース名はバッククォート(`)で囲むのが正式


フィードバック:

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us