10bet网址
MySQL5.6版本リファレンスマニュアル
下载本手册

9.2スキーマオブジェクト名

データベース、テーブル、インデックス、カラム、エイリアス、ビュー、ストアドプロシージャー、パーティション、テーブルスペース、その他のオブジェクト名など、MySQL数据库内のある種のオブジェクトは、識別子として知られています。このセクションでは、MySQL数据库で識別子について許可されている構文について説明します。セクション9.2.2「識別子の大文字と小文字の区別」では、どのタイプの識別子がどの条件下で大文字と小文字を区別するかについて説明します。

識別子は引用符で囲むことも囲まないこともあります。識別子に特殊文字が含まれている場合、または識別子が予約語である場合、その識別子を参照するときは必ず引用符で囲む必要があります。(例外: 修飾名内でピリオドのあとに続く予約語は識別子である必要があるため、引用符で囲む必要はありません。)予約語はセクション9.3「予約語」に記載されています。

識別子は内部で Unicode码に変換されます。以下の文字を含めることができます。

  • 引用符で囲まれていない識別子で許可される文字。

    • ASCII码:[0-9,a-z,a-z$\(基本的なラテン文字、0-9 の数字、ドル、下線)

    • 拡張: U+0080..U+FFFF段

  • 引用符で囲まれている識別子で許可される文字には、U+0000美元を除き、完全な Unicode基本多语言平面(BMP)が含まれます。

    • ASCII码:U+0001..U+007F

    • 拡張: U+0080..U+FFFF段

  • ASCII数字(U+0000)と補助文字 (铀+10000以上) は、引用符で囲まれた識別子または引用符で囲まれていない識別子では許可されません。

  • 識別子は数字で始めることができますが、引用符で囲まれていないかぎり、数字のみで構成することはできません。

  • データベース名、テーブル名、およびカラム名は、空白文字で終えることはできません。

識別子引用符文字は逆引用符 (`) です。

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

ANSI\U报价SQL语句モードが有効になっている場合、二重引用符内で識別子を引用符で囲むことも許可されています。

mysql>创建表“test”(col INT);错误1064:您的SQL语法有错误。。。mysql>设置sql_mode='ANSI_QUOTES';mysql>创建表“test”(col INT);查询正常,0行受影响(0.00秒)

ANSI\U报价モードでは、サーバーは二重引用符で囲まれた文字列を識別子として解釈します。この結果、このモードが有効になっているときには、文字列リテラルは単一引用符で囲む必要があります。二重引用符で囲むことはできません。サーバー SQL语句モードは、セクション5.1.7「サーバー SQL语句モード」で説明しているように制御されます。

識別子が引用符で囲まれていれば、識別子引用符文字を識別子内に含めることができます。識別子内に含める文字が識別子自体を囲むのに使用している引用符と同じ場合、文字を二重にする必要があります。次のステートメントは、c“d型という名前のカラムを含んだa​​`bという名前のテーブルを作成します。

mysql>创建表`a``b`(`c“d`INT);

クエリーの選択リストで、引用したカラムエイリアスを指定するには、識別子または文字列引用文字を使用します。

mysql>选择1作为“one”,选择2作为“two”;+----+----+|一|二|+------+------+|一|二|+-----+-----+

ステートメント内のどこに指定する場合でも、エイリアスへの引用した参照には、識別子引用符を使用する必要があります。そうしないと、参照は文字列リテラルとして扱われます。

MEMEN(この場合のMNは整数) で始まる名前を使用しないことが推奨されています。たとえば、1e级を識別子として使用しないでください。これは、1e+3级などの式があいまいになるためです。コンテキストに応じて、式1e+3级として、または数値1e+3级として解釈される場合があります。

テーブルネーム名を作成するのにMD5()を使用する場合は注意が必要です。なぜなら、これは、前述のような不正な形式やあいまいな形式で名前を生成する可能性があるからです。

ユーザー変数は、識別子または識別子の一部として SQL语句ステートメントの中で直接使用することはできません。回避策の詳細と例については、セクション9.4「ユーザー定義変数」を参照してください。

セクション9.2.3「識別子とファイル名のマッピング」で説明しているように、データベース名とテーブル名内の特殊文字は、対応するファイルシステム名でエンコードされます。特殊文字を含む古いバージョンの MySQL数据库のデータベースまたはテーブルがあり、それの基になるディレクトリ名またはファイル名が新しいエンコーディングを使用するように更新されていない場合、サーバーはそれらの名前に#我的QL50#というプリフィクスを付けて表示します。このような名前の参照、または新しいエンコーディングへの変換の詳細は、そのセクションを参照してください。

次の表には、識別子のタイプごとの最大の長さが示されています。

識別子 最大の長さ (文字)
数据库 64 (国家数据库ストレージエンジン: 63)
テーブル 64 (国家数据库ストレージエンジン: 63)
カラム 64
インデックス 64
制約 64
ストアドプログラム 64
ビュー 64
テーブルスペース 64
サーバー 64
ログファイルグループ 64
エイリアス 256 (表のあとの例外を参照してください)
複合ステートメントラベル 16

创建视图ステートメント内のカラム名に対するエイリアスは、(256文字の最大のエイリアス長ではなく) 64文字の最大のカラム長に対してチェックされます。

識別子は Unicode(UTF-8)を使用して格納されます。これは、.frm公司ファイル内に格納されたテーブル定義の識別子と、mysql数据库データベース内の付与テーブルに格納された識別子に適用されます。付与テーブル内の識別子文字列カラムのサイズは文字数で測定されます。これらのカラムに格納されている値に許可されている文字数を減らすことなく、マルチバイト文字を使用できます。これは MySQL 4.1版より前には当てはまりません。前述のように、許容されている Unicode码文字は、基本多语言平面(BMP)の文字です。補助文字は許可されません。

MySQL群集では、データベースおよびテーブルの名前に 63文字の最大長を課します。セクション18.1.6.5「MySQL集群」内のデータベースオブジェクトに関する制限」を参照してください。