MySQLで予約語「order」をテーブル名として作成・使用する方法
MySQLでは「order」は予約語(キーワード)として登録されているため、テーブル名としてそのまま使用することはできません。予約語をテーブル名やカラム名として扱いたい場合は、バッククォート(`)で名前を囲む必要があります。バッククォートで囲むことで、MySQLはそのキーワードを通常のテーブル名やカラム名として正しく解釈してくれます。
基本構文
予約語をテーブル名として使う場合の基本的な構文は以下の通りです。
CREATE TABLE `order`
(
yourColumnName1 dataType,
yourColumnName2 dataType,
yourColumnName3 dataType,
...
N
);実際にテーブルを作成してみる
それでは、実際に「order」という名前のテーブルを作成してみましょう。以下のクエリを実行します。
mysql> create table `order`
-> (
-> Id int,
-> Price int
-> );
Query OK, 0 rows affected (0.66 sec)テーブルが正常に作成されました。
レコードの挿入
次に、INSERTコマンドを使用してテーブルにレコードを挿入していきます。
mysql> insert into `order` values(1,200); Query OK, 1 row affected (0.21 sec) mysql> insert into `order` values(2,100); Query OK, 1 row affected (0.17 sec) mysql> insert into `order` values(3,300); Query OK, 1 row affected (0.20 sec) mysql> insert into `order` values(4,1200); Query OK, 1 row affected (0.13 sec) mysql> insert into `order` values(5,1000); Query OK, 1 row affected (0.18 sec) mysql> insert into `order` values(6,7000); Query OK, 1 row affected (0.20 sec) mysql> insert into `order` values(7,900); Query OK, 1 row affected (0.16 sec) mysql> insert into `order` values(8,10000); Query OK, 1 row affected (0.18 sec) mysql> insert into `order` values(9,1100); Query OK, 1 row affected (0.30 sec) mysql> insert into `order` values(10,500); Query OK, 1 row affected (0.18 sec)
レコードの表示
SELECT文を使って、テーブル内のすべてのレコードを確認してみましょう。
mysql> select *from `order`;
実行結果は以下の通りです。
+------+-------+ | Id | Price | +------+-------+ | 1 | 200 | | 2 | 100 | | 3 | 300 | | 4 | 1200 | | 5 | 1000 | | 6 | 7000 | | 7 | 900 | | 8 | 10000 | | 9 | 1100 | | 10 | 500 | +------+-------+ 10 rows in set (0.00 sec)
バッククォートを忘れるとエラーが発生する
予約語であるテーブル名をバッククォートで囲まずに使用すると、SQL構文エラーが発生します。
mysql> select *from order; 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 'order' at line 1
まとめ
このエラーを回避し、予約語をテーブル名やカラム名として安全に使用するためには、必ずバッククォート(`)で名前を囲むことが重要です。なお、設計段階で予約語と重複しないテーブル名・カラム名を選ぶことで、こうしたトラブル自体を防ぐこともできます。
-
MySQLでAUTO_INCREMENTのID順にレコードを並べ替える方法
MySQLでは、AUTO_INCREMENTで自動採番される「Id」列を基準に、ORDER BY句を使うことで簡単にレコードを並べ替えることができます。ここでは、実際にテーブルを作成し、データを登録して、Idの降順(DESC)で並べ替える手順を解説します。 1. テーブルを作成する まず、AUTO_INCREMENT付きの主キーを持つテーブルを作成します。 mysql> create table DemoTable(Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100)); Query OK, 0 rows
-
【MySQL】複数の列の組み合わせに一意制約(UNIQUE)を設定する方法
MySQLで列のペアを一意(ユニーク)にするには? MySQLで2つ以上の列の組み合わせに対して一意性を持たせたい場合は、ALTER TABLEコマンドとUNIQUE制約を組み合わせて使用します。単一の列だけでなく、複数列をまとめて1つのユニークキーとして登録できるため、「名前と電話番号の組み合わせが重複してはならない」のような業務ルールをデータベースレベルで実現できます。 基本構文 ALTER TABLE テーブル名 ADD UNIQUE ユニーク制約名(列名1, 列名2, ...N); この構文では、指定した複数の列を連結した値全体が一意である必要があります。つまり、個々の列の値が重複し