[IGNORE | REPLACE] [AS]  query_expression CREATE [TEMPORARY] TABLE [IF NOT EXISTS]  tbl_name { LIKE  old_tbl_name  | (LIKE  old_tbl_name ) } create_definition : { col_name column_definition | {INDEX | KEY} [ index_name ] [ index_type ] ( key_part ,...) [ index_option ] ... | {FULLTEXT | SPATIAL} [INDEX | KEY] [ index_name ] ( key_part ,...) [ index_option ] ... | [CONSTRAINT [ symbol ]] PRIMARY KEY [ index_type ] ( key_part ,...) [ index_option ] ... | [CONSTRAINT [ symbol ]] UNIQUE [INDEX | KEY] [ index_name ] [ index_type ] ( key_part ,...) [ index_option ] ... | [CONSTRAINT [ symbol ]] FOREIGN KEY [ index_name ] ( col_name ,...) reference_definition |  check_constraint_definition } column_definition : { data_type  [NOT NULL | NULL] [DEFAULT { literal  | ( expr )} ] [VISIBLE | INVISIBLE] [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT ’ string ’] [COLLATE  collation_name ] [COLUMN_FORMAT {FIXED | DYNAMIC | DEFAULT}] [ENGINE_ATTRIBUTE [=] ’ string ’] [SECONDARY_ENGINE_ATTRIBUTE [=] ’ string ’] [STORAGE {DISK | MEMORY}] [ reference_definition ] [ check_constraint_definition ] |  data_type [COLLATE  collation_name ] [GENERATED ALWAYS] AS ( expr ) [VIRTUAL | STORED] [NOT NULL | NULL] [VISIBLE | INVISIBLE] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT ’ string ’] [ reference_definition ] [ check_constraint_definition ] } data_type : (see Chapter 11,  Data Types ) key_part : { col_name  [( length )] | ( expr )} [ASC | DESC] index_type : USING {BTREE | HASH} index_option : { KEY_BLOCK_SIZE [=]  value |  index_type | WITH PARSER  parser_name | COMMENT ’ string ’ | {VISIBLE | INVISIBLE} |ENGINE_ATTRIBUTE [=] ’ string ’ |SECONDARY_ENGINE_ATTRIBUTE [=] ’ string ’ } check_constraint_definition : [CONSTRAINT [ symbol ]] CHECK ( expr ) [[NOT] ENFORCED] 2542 CREATE TABLE Statement