予約語をテーブル名として使用できないため、「テーブルテーブルの作成」はMySQLで機能しますか?
まず、テーブルの作成中に「テーブルテーブルの作成」を使用する場合を見てみましょう。エラーが発生します-
mysql> create table table( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100) );
これにより、次の出力が生成されます。つまり、エラー-
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 'table( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100) )' at line 1
上記のように、「テーブル」という単語は予約語であり、テーブルの名前として使用することはできません。したがって、これを修正するには、バッククォートを使用してテーブル名をラップする必要があります。
テーブルをもう一度作成し、テーブル名をバッククォート付きの`table`として設定します-
mysql> create table `table`( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100) ); Query OK, 0 rows affected (0.81 sec)
挿入コマンド-
を使用して、テーブルにいくつかのレコードを挿入しますmysql> insert into `table`(FirstName) values('Chris'); Query OK, 1 row affected (0.15 sec) mysql> insert into `table`(FirstName) values('Robert'); Query OK, 1 row affected (0.15 sec) mysql> insert into `table`(FirstName) values('David'); Query OK, 1 row affected (0.15 sec) mysql> insert into `table`(FirstName) values('Mike'); Query OK, 1 row affected (0.13 sec)
selectステートメントを使用してテーブルのすべてのレコードを表示する-
mysql> select *from `table`;
これにより、次の出力が生成されます-
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | Chris | | 2 | Robert | | 3 | David | | 4 | Mike | +----+-----------+ 4 rows in set (0.00 sec)
-
MySQLの列名として予約語「index」を使用できますか?
はい。ただし、列名として使用する際のエラーを回避するために、予約語(インデックス)にバックティック記号を追加する必要があります。 まずテーブルを作成しましょう- mysql> create table DemoTable ( `index` int ); Query OK, 0 rows affected (0.48 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(1000); Query OK, 1 row affected (0.18 sec) m
-
2019のようにMySQLで現在の年から動的なテーブル名を作成します
年(2019)のようなテーブル名を作成するには、PREPAREステートメントを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1959 ( UserName varchar(20) ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1959 values('Chris'); Quer