Numeric Data Type Syntax producing the effect of this attribute. For example, applications could use the  LPAD()  function to zero-pad numbers up to the desired width, or they could store the formatted numbers in  CHAR  columns. Numeric data types that permit the  UNSIGNED  attribute also permit  SIGNED . However, these data types are signed by default, so the  SIGNED  attribute has no effect. As of MySQL 8.0.17, the  UNSIGNED  attribute is deprecated for columns of type  FLOAT ,  DOUBLE , and DECIMAL  (and any synonyms); 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. SERIAL  is an alias for  BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE . SERIAL DEFAULT VALUE  in the definition of an integer column is an alias for  NOT NULL AUTO_INCREMENT UNIQUE . Warning When you use subtraction between integer values where one is of type  UNSIGNED , the result is unsigned unless the  NO_UNSIGNED_SUBTRACTION  SQL mode is enabled. See Section 12.11, “Cast Functions and Operators” . A bit-value type.  M  indicates the number of bits per value, from 1 to 64. The default is 1 if  M  is omitted. A very small integer. The signed range is  -128  to  127 . The unsigned range is  0  to  255 . These types are synonyms for  TINYINT(1) . A value of zero is considered false. Nonzero values are considered true: mysql>  SELECT IF(0 = FALSE, ’true’, ’false’); +--------------------------------+ | IF(0 = FALSE, ’true’, ’false’) | +--------------------------------+ | true | +--------------------------------+ mysql>  SELECT IF(2, ’true’, ’false’); +------------------------+ | IF(2, ’true’, ’false’) | +------------------------+ | true | +------------------------+ mysql>  SELECT IF(1, ’true’, ’false’); +------------------------+ | IF(1, ’true’, ’false’) | +------------------------+ | true | +------------------------+ mysql>  SELECT IF(0, ’true’, ’false’); +------------------------+ | IF(0, ’true’, ’false’) | +------------------------+ | false | +------------------------+ However, the values  TRUE  and  FALSE  are merely aliases for  1  and  0 , respectively, as shown here: 2013 •  BIT[( M )] •  TINYINT[( M )] [UNSIGNED] [ZEROFILL] • BOOL ,  BOOLEAN