CREATE TABLE Statement BLOB  and  TEXT  columns also can be indexed, but a prefix length  must  be given. Prefix lengths are given in characters for nonbinary string types and in bytes for binary string types. That is, index entries consist of the first  length  characters of each column value for  CHAR ,  VARCHAR , and  TEXT  columns, and the first  length  bytes of each column value for  BINARY ,  VARBINARY , and  BLOB  columns. Indexing only a prefix of column values like this can make the index file much smaller. For additional information about index prefixes, see Section 13.1.15, “CREATE INDEX Statement” . Only the  InnoDB  and  MyISAM  storage engines support indexing on  BLOB  and  TEXT  columns. For example: If a specified index prefix exceeds the maximum column data type size,  CREATE TABLE  handles the index as follows: CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10))); •For a nonunique index, either an error occurs (if strict SQL mode is enabled), or the index length is reduced to lie within the maximum column data type size and a warning is produced (if strict SQL mode is not enabled). •For a unique index, an error occurs regardless of SQL mode because reducing the index length might enable insertion of nonunique entries that do not meet the specified uniqueness requirement. • JSON  columns cannot be indexed. You can work around this restriction by creating an index on a generated column that extracts a scalar value from the  JSON  column. See Indexing a Generated Column to Provide a JSON Column Index, for a detailed example. • NOT NULL | NULL • DEFAULT • VISIBLE ,  INVISIBLE 2546 The  VISIBLE  and  INVISIBLE  keywords are available as of MySQL 8.0.23. Prior to MySQL 8.0.23, all columns are visible. Specify column visibility. The default is  VISIBLE  if neither keyword is present. A table must have at least one visible column. Attempting to make all columns invisible produces an error. For more information, see Section 13.1.20.10, “Invisible Columns” . If the  NO_ZERO_DATE  or  NO_ZERO_IN_DATE  SQL mode is enabled and a date-valued default is not correct according to that mode,  CREATE TABLE  produces a warning if strict SQL mode is not enabled and an error if strict mode is enabled. For example, with  NO_ZERO_IN_DATE  enabled,  c1 DATE DEFAULT ’2010-00-00’  produces a warning. Specifies a default value for a column. For more information about default value handling, including the case that a column definition includes no explicit  DEFAULT  value, see Section 11.6, “Data Type Default Values” . If neither  NULL  nor  NOT NULL  is specified, the column is treated as though  NULL  had been specified. In MySQL 8.0, only the  InnoDB ,  MyISAM , and  MEMORY  storage engines support indexes on columns that can have  NULL  values. In other cases, you must declare indexed columns as  NOT NULL  or an error results.