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

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

まとめ

このエラーを回避し、予約語をテーブル名やカラム名として安全に使用するためには、必ずバッククォート(`)で名前を囲むことが重要です。なお、設計段階で予約語と重複しないテーブル名・カラム名を選ぶことで、こうしたトラブル自体を防ぐこともできます。

  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

  2. 【MySQL】複数の列の組み合わせに一意制約(UNIQUE)を設定する方法

    MySQLで列のペアを一意(ユニーク)にするには? MySQLで2つ以上の列の組み合わせに対して一意性を持たせたい場合は、ALTER TABLEコマンドとUNIQUE制約を組み合わせて使用します。単一の列だけでなく、複数列をまとめて1つのユニークキーとして登録できるため、「名前と電話番号の組み合わせが重複してはならない」のような業務ルールをデータベースレベルで実現できます。 基本構文 ALTER TABLE テーブル名 ADD UNIQUE ユニーク制約名(列名1, 列名2, ...N); この構文では、指定した複数の列を連結した値全体が一意である必要があります。つまり、個々の列の値が重複し