Out-of-Range and Overflow Handling data types to be removed in a future version of MySQL. Consider using an alternative means of producing the effect of these attributes. For example, applications can use the  LPAD()  function to zero-pad numbers up to the desired width, or they can store the formatted numbers in  CHAR  columns. All integer types can have an optional (nonstandard)  UNSIGNED  attribute. An unsigned type can be used to permit only nonnegative numbers in a column or when you need a larger upper numeric range for the column. For example, if an  INT  column is  UNSIGNED , the size of the column’s range is the same but its endpoints shift up, from  -2147483648  and  2147483647  to  0  and  4294967295 . Floating-point and fixed-point types also can be  UNSIGNED . As with integer types, this attribute prevents negative values from being stored in the column. Unlike the integer types, the upper range of column values remains the same. As of MySQL 8.0.17, the  UNSIGNED  attribute is deprecated for columns of type FLOAT ,  DOUBLE , and  DECIMAL  (and any synonyms) and you should expect support for it to be removed in a future version of MySQL. Consider using a simple  CHECK  constraint instead for such columns. If you specify  ZEROFILL  for a numeric column, MySQL automatically adds the  UNSIGNED  attribute. Integer or floating-point data types can have the  AUTO_INCREMENT  attribute. When you insert a value of NULL  into an indexed  AUTO_INCREMENT  column, the column is set to the next sequence value. Typically this is  value +1 , where  value  is the largest value for the column currently in the table. ( AUTO_INCREMENT sequences begin with  1 .) Storing  0  into an  AUTO_INCREMENT  column has the same effect as storing  NULL , unless the NO_AUTO_VALUE_ON_ZERO  SQL mode is enabled. Inserting  NULL  to generate  AUTO_INCREMENT  values requires that the column be declared  NOT NULL . If the column is declared  NULL , inserting  NULL  stores a  NULL . When you insert any other value into an AUTO_INCREMENT  column, the column is set to that value and the sequence is reset so that the next automatically generated value follows sequentially from the inserted value. Negative values for  AUTO_INCREMENT  columns are not supported. CHECK  constraints cannot refer to columns that have the  AUTO_INCREMENT  attribute, nor can the AUTO_INCREMENT  attribute be added to existing columns that are used in  CHECK  constraints. As of MySQL 8.0.17,  AUTO_INCREMENT  support is deprecated for  FLOAT  and  DOUBLE  columns; you should expect it to be removed in a future version of MySQL. Consider removing the  AUTO_INCREMENT attribute from such columns, or convert them to an integer type. When MySQL stores a value in a numeric column that is outside the permissible range of the column data type, the result depends on the SQL mode in effect at the time: When an out-of-range value is assigned to an integer column, MySQL stores the value representing the corresponding endpoint of the column data type range. When a floating-point or fixed-point column is assigned a value that exceeds the range implied by the specified (or default) precision and scale, MySQL stores the value representing the corresponding endpoint of that range. 2019 •If no restrictive modes are enabled, MySQL clips the value to the appropriate endpoint of the column data type range and stores the resulting value instead. •If strict SQL mode is enabled, MySQL rejects the out-of-range value with an error, and the insert fails, in accordance with the SQL standard. 11.1.7 Out-of-Range and Overflow Handling