ULT as the value), the actual value will be taken from the counter, with each insertion incrementing the counter by one. You can still insert a value explicitly. If you insert a value that is greater than the current counter value, the counter is set based on the new value. An AUTO_INCREMENT column is implicitly NOT NULL. Use LAST_INSERT_ID to get the AUTO_INCREMENT value most recently used by an INSERT statement. ZEROFILL Column Option ---------------------- If the ZEROFILL column option is specified for a column using a numeric data type, then the column will be set to UNSIGNED and the spaces used by default to pad the field are replaced with zeros. ZEROFILL is ignored in expressions or as part of a UNION. ZEROFILL is a non-standard MySQL and MariaDB enhancement. PRIMARY KEY Column Option ------------------------- Use PRIMARY KEY to make a column a primary key. A primary key is a special type of a unique key. There can be at most one primary key per table, and it is implicitly NOT NULL. Specifying a column as a unique key creates a unique index on that column. See the Index Definitions section below for more information. UNIQUE KEY Column Option ------------------------ Use UNIQUE KEY (or just UNIQUE) to specify that all values in the column must be distinct from each other. Unless the column is NOT NULL, there may be multiple rows with NULL in the column. Specifying a column as a unique key creates a unique index on that column. See the Index Definitions section below for more information. COMMENT Column Option --------------------- You can provide a comment for each column using the COMMENT clause. The maximum length is 1024 characters. Use the SHOW FULL COLUMNS statement to see column comments. REF_SYSTEM_ID ------------- REF_SYSTEM_ID can be used to specify Spatial Reference System IDs for spatial data type columns. For example: CREATE TABLE t1(g GEOMETRY(9,4) REF_SYSTEM_ID=101); Generated Columns ----------------- A generated column is a column in a table that cannot explicitly be set to a specific value in a DML query. Instead, its value is automatically generated based on an expression. This expression might generate the value based on the values of other columns in the table, or it might generate the value by calling built-in functions or user-defined functions (UDFs). There are two types of generated columns: * PERSISTENT or STORED: This type's value is actually stored in the table. * VIRTUAL: This type's value is not stored at all. Instead, the value is generated dynamically when the table is queried. This type is the default. Generated columns are also sometimes called computed columns or virtual columns. For a complete description about generated columns and their limitations, see Generated (Virtual and Persistent/Stored) Columns. COMPRESSED ---------- Certain columns may be compressed. See Storage-Engine Independent Column Compression. INVISIBLE --------- Columns may be made invisible, and hidden in certain contexts. See Invisible Columns. WITH SYSTEM VERSIONING Column Option ------------------------------------ Columns may be explicitly marked as included from system versioning. See System-versioned tables for details. WITHOUT SYSTEM VERSIONING Column Option --------------------------------------- Columns may be explicitly marked as excluded from system versioning. See System-versioned tables for details. Index Definitions ----------------- index_definition: {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... {{{|}}} [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} index_option: [ KEY_BLOCK_SIZE [=] value {i