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

MySQLで「a^b」のような特殊文字を含むテーブル名や列名のテーブルを作成する方法

MySQLでは、a^b のような記号を含む識別子(テーブル名や列名)を持つテーブルを作成する場合、引用符(クォート)を使用する必要があります。使用できる引用符は、シングルクォートかダブルクォートのいずれかで、これは ANSI_QUOTES SQLモードの設定によって決まります。

ANSI_QUOTESモードが無効な場合

このモードが無効(デフォルト状態)の場合、識別子の引用文字として使用できるのはバッククォート(`)のみです。ダブルクォートを使おうとすると、構文エラーが発生します。

以下の例では、「a^b」という名前のテーブルを作成しています。

mysql> Create table `a^b`(`a^b` int);
Query OK, 0 rows affected (0.19 sec)

mysql> Create table "a^g"("a^g" int);
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 '"a^g" ("a^g" int)' at line 1

上記のように、バッククォートで囲めば正常に作成できますが、ダブルクォートで囲むとエラー1064(構文エラー)が出力されます。

ANSI_QUOTESモードが有効な場合

このモードを有効にすると、バッククォート(`)とダブルクォート(")の両方を識別子の引用文字として使用できるようになります。以下の例では、まず sql_modeANSI_Quotes を設定してから、両方の引用符を使って同じような名前のテーブルを作成しています。

mysql> Set sql_mode = 'ANSI_Quotes';
Query OK, 0 rows affected (0.03 sec)

mysql> Create table "a^d"("a^d" int);
Query OK, 0 rows affected (0.21 sec)

mysql> Create table `a^e`(`a^e` int);
Query OK, 0 rows affected (0.14 sec)

このように、ANSI_QUOTESモードを有効にしておけば、どちらの引用符でも特殊文字を含むテーブル名や列名を問題なく扱うことができます。なお、SQL標準に準拠した動作をさせたい場合は、このモードの利用を検討するとよいでしょう。

  1. MySQLで特定の3つの値しか格納できないカラムを持つテーブルを作成する方法

    MySQLで、あらかじめ決められた3つの値だけを格納できるカラムを持つテーブルを作成したい場合は、ENUMデータ型を使用します。ENUM型を使うと、指定した候補値以外のデータが挿入されるのを防ぐことができます。テーブルの作成まず、ENUM型のカラムを持つテーブルを作成しましょう。ここでは例として、「RED」「GREEN」「BLUE」の3色のみを許可するColorカラムを定義します。mysql> create table DemoTable838(Color ENUM(RED,GREEN,BLUE)); Query OK, 0 rows affected (0.67 sec)これで、Col

  2. MySQLでブール(BOOLEAN)列にデフォルト値1を設定・変更する方法

    MySQLでは、ALTER TABLE文とDEFAULT句を組み合わせることで、既存のブール(BOOLEAN)型の列にデフォルト値「1」を割り当てることができます。あらかじめ設定しておけば、INSERTコマンド実行時にその列へ値を明示的に指定しなくても、自動的に1が格納されます。 サンプルテーブルを作成する まずはテーブルを作成しましょう。 mysql> create table DemoTable (     isAdult int ); Query OK, 0 rows affected (1.39 sec) 既存の列にデフォルト値1を設定する