📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

テーブルを作成する



このステートメントは、現在選択されているデータベースに新しいテーブルを作成します。MySQL のCREATE TABLEステートメントと同様の動作をします。

あらすじ

CreateTableStmt
CREATEOptTemporaryTABLEIfNotExistsTableNameTableElementListOptCreateTableOptionListOptPartitionOptDuplicateOptAsOptCreateTableSelectOptLikeTableWithOrWithoutParenOnCommitOpt
OptTemporary
TEMPORARYGLOBALTEMPORARY
IfNotExists
IFNOTEXISTS
TableName
Identifier.Identifier
TableElementListOpt
(TableElementList)
TableElementList
TableElement,
TableElement
ColumnDefConstraint
ColumnDef
ColumnNameTypeSERIALColumnOptionListOpt
ColumnOptionListOpt
ColumnOption
ColumnOptionList
ColumnOption
ColumnOption
NOTNULLAUTO_INCREMENTPrimaryOptKEYGLOBALLOCALUNIQUEKEYGLOBALLOCALDEFAULTDefaultValueExprSERIALDEFAULTVALUEONUPDATENowSymOptionFractionCOMMENTstringLitConstraintKeywordOptCHECK(Expression)EnforcedOrNotOrNotNullOptGeneratedAlwaysAS(Expression)VirtualOrStoredReferDefCOLLATECollationNameCOLUMN_FORMATColumnFormatSTORAGEStorageMediaAUTO_RANDOMOptFieldLen
Constraint
IndexDefForeignKeyDef
IndexDef
INDEXKEYIndexName(KeyPartList)IndexOption
KeyPartList
KeyPart,
KeyPart
ColumnName(Length)ASCDESC(Expression)ASCDESC
IndexOption
COMMENTStringVISIBLEINVISIBLEUSINGTYPEBTREERTREEHASHGLOBALLOCAL
ForeignKeyDef
CONSTRAINTIdentifierFOREIGNKEYIdentifier(ColumnName,)REFERENCESTableName(ColumnName,)ONDELETEReferenceOptionONUPDATEReferenceOption
ReferenceOption
RESTRICTCASCADESETNULLSETDEFAULTNOACTION
CreateTableOptionListOpt
TableOptionList
PartitionOpt
PARTITIONBYPartitionMethodPartitionNumOptSubPartitionOptPartitionDefinitionListOpt
DuplicateOpt
IGNOREREPLACE
TableOptionList
TableOption,
TableOption
PartDefOptionDefaultKwdOptCharsetKwEqOptCharsetNameCOLLATEEqOptCollationNameAUTO_INCREMENTAUTO_ID_CACHEAUTO_RANDOM_BASEAVG_ROW_LENGTHCHECKSUMTABLE_CHECKSUMKEY_BLOCK_SIZEDELAY_KEY_WRITESHARD_ROW_ID_BITSPRE_SPLIT_REGIONSEqOptLengthNumCONNECTIONPASSWORDCOMPRESSIONEqOptstringLitRowFormatSTATS_PERSISTENTPACK_KEYSEqOptStatsPersistentValSTATS_AUTO_RECALCSTATS_SAMPLE_PAGESEqOptLengthNumDEFAULTSTORAGEMEMORYDISKSECONDARY_ENGINEEqOptNULLStringNameUNIONEqOpt(TableNameListOpt)ENCRYPTIONEqOptEncryptionOptTTLEqOptTimeColumnName+INTERVALExpressionTimeUnitTTLEnableEqOptONOFFTTLJobIntervalEqOptstringLitAFFINITYEqOptStringNamePlacementPolicyOption
OnCommitOpt
ONCOMMITDELETEROWS
PlacementPolicyOption
PLACEMENTPOLICYEqOptPolicyNamePLACEMENTPOLICYEqOptSETDEFAULT
DefaultValueExpr
NowSymOptionFractionParenthesesSignedLiteralNextValueForSequenceParenthesesBuiltinFunction
BuiltinFunction
(BuiltinFunction)identifier()identifier(ExpressionList)REPLACE(ExpressionList)
NowSymOptionFractionParentheses
(NowSymOptionFractionParentheses)NowSymOptionFraction
NowSymOptionFraction
NowSymNowSymFunc()NowSymFunc(NUM)CurdateSym()CURRENT_DATE
NextValueForSequenceParentheses
(NextValueForSequenceParentheses)NextValueForSequence
NextValueForSequence
NEXTVALUEforKwdTableNameNEXTVAL(TableName)

以下のテーブルオプションがサポートされています。 AVG_ROW_LENGTHCHECKSUMCOMPRESSIONCONNECTIONDELAY_KEY_WRITE 、 {{B ENGINEKEY_BLOCK_SIZEMAX_ROWSMIN_ROWSおよびSTATS_PERSISTENT ROW_FORMATのその他のオプションは解析されますが無視されます。

オプション説明
AUTO_INCREMENT増分フィールドの初期値AUTO_INCREMENT = 5
SHARD_ROW_ID_BITS暗黙の_tidb_rowidシャードのビット数を設定するにはSHARD_ROW_ID_BITS = 4
PRE_SPLIT_REGIONSテーブル作成時に2^(PRE_SPLIT_REGIONS)領域を事前に分割するにはPRE_SPLIT_REGIONS = 4
AUTO_ID_CACHETiDBインスタンスで自動IDキャッシュサイズを設定します。デフォルトでは、TiDBは自動IDの割り当て速度に応じてこのサイズを自動的に変更します。AUTO_ID_CACHE = 200
AUTO_RANDOM_BASEauto_randomの初期増分値を設定します。このオプションは内部インターフェースの一部とみなすことができます。ユーザーはこのパラメータを無視できます。AUTO_RANDOM_BASE = 0
CHARACTER SETテーブルの文字セットを指定するにはCHARACTER SET = 'utf8mb4'
COLLATEテーブルの文字セット照合順序を指定するにはCOLLATE = 'utf8mb4_bin'
COMMENTコメント情報COMMENT = 'コメント情報'
AFFINITYテーブルまたはパーティションのアフィニティスケジューリングを有効にするには、この設定を使用します。パーティション化されていないテーブルの場合は'table'に、パーティション化されたテーブルの場合は'partition'に設定できます。 'none'に設定するか、空欄のままにすると、アフィニティスケジューリングが無効になります。AFFINITY = 'テーブル'

注記:

  • TiDBは、新しく作成されたテーブルごとに個別のリージョンを作成します。
  • AFFINITYを使用する前に、アフィニティが有効になっているテーブルのパーティショニング スキームの変更 (パーティションの追加、削除、再編成、または交換など) はサポートされておらず、一時テーブルまたはビューでAFFINITYを構成することもサポートされていないことに注意してください。

シンプルな表を作成し、1行を挿入する:

CREATE TABLE t1 (a int); DESC t1; SHOW CREATE TABLE t1\G INSERT INTO t1 (a) VALUES (1); SELECT * FROM t1;
mysql> drop table if exists t1; Query OK, 0 rows affected (0.23 sec) mysql> CREATE TABLE t1 (a int); Query OK, 0 rows affected (0.09 sec) mysql> DESC t1; +-------+------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+------+---------+-------+ | a | int | YES | | NULL | | +-------+------+------+------+---------+-------+ 1 row in set (0.00 sec) mysql> SHOW CREATE TABLE t1\G *************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE `t1` ( `a` int DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin 1 row in set (0.00 sec) mysql> INSERT INTO t1 (a) VALUES (1); Query OK, 1 row affected (0.03 sec) mysql> SELECT * FROM t1; +------+ | a | +------+ | 1 | +------+ 1 row in set (0.00 sec)

テーブルが存在する場合は削除し、存在しない場合は条件付きでテーブルを作成する。

DROP TABLE IF EXISTS t1; CREATE TABLE IF NOT EXISTS t1 ( id BIGINT NOT NULL PRIMARY KEY auto_increment, b VARCHAR(200) NOT NULL ); DESC t1;
mysql> DROP TABLE IF EXISTS t1; Query OK, 0 rows affected (0.22 sec) mysql> CREATE TABLE IF NOT EXISTS t1 ( id BIGINT NOT NULL PRIMARY KEY auto_increment, b VARCHAR(200) NOT NULL ); Query OK, 0 rows affected (0.08 sec) mysql> DESC t1; +-------+--------------+------+------+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+------+---------+----------------+ | id | bigint | NO | PRI | NULL | auto_increment | | b | varchar(200) | NO | | NULL | | +-------+--------------+------+------+---------+----------------+ 2 rows in set (0.00 sec)

MySQLとの互換性

  • 空間型を除くすべてのデータ型がサポートされています。

  • TiDB は、MySQL との互換性のために、 HASHBTREERTREEなどのインデックス タイプを構文で受け入れますが、それらを無視します。

  • TiDB Self-Managed およびTiDB Cloud DedicatedはFULLTEXT構文の解析をサポートしていますが、 FULLTEXTインデックスの使用はサポートしていません。

    注記:

    現在、特定の AWS リージョンのTiDB Cloud StarterとTiDB Cloud EssentialインスタンスのみがFULLTEXT構文と索引をサポートしています。

  • PRIMARY KEYインデックス オプションを使用して、 UNIQUE INDEXまたはGLOBALグローバル インデックスとしてグローバルインデックスことは、パーティション化パーティション化されたテーブルの TiDB 拡張機能であり、MySQL とは互換性がありません。

  • 互換性のために、 index_col_name属性は、最大長制限3072バイトの長さオプションをサポートしています。
  • [ASC | DESC]内のindex_col_nameは現在解析されますが無視されます (MySQL 5.7互換の動作)。
  • COMMENT属性はWITH PARSERオプションをサポートしていません。
  • TiDBは、デフォルトでは1つのテーブルで1017列、最大4096列をサポートします。InnoDBにおける対応する列数の制限は1017列、MySQLにおけるハードリミットは4096列です。詳細はTiDBの制限事項を参照してください。
  • TiDB はHASHRANGELIST 、およびKEYサポートしていますパーティショニングの種類されていないパーティション タイプの場合、TiDB はWarning: Unsupported partition type %s, treat as normal tableを返します。ここで、 %sはサポートされていない特定のパーティション タイプです。

関連項目

このページは役に立ちましたか?