Software Outsourcing, Offshore Software Development, Offshore Outsourcing Services, IT Outsourcing, Offshore Development
MySQL manual Offshore Software Outsourcing and Programming, IT Outsourcing Offshore Software Development  
Call Us Today: 1-800-678-9001
Offshore Software Outsourcing and Programming, IT Outsourcing Offshore Software Development

Home / Technical Support / MySQL

Key Offerings:

B2B and B2C E-Business Solutions

Offshore Software Development Outsourcing

Strategic Consulting

Offshore Software Outsourcing

About ALTOROS: ALTOROS Systems is headquartered in Tampa, Florida and maintains an office near Boston, Massachusetts and technology development center in Belarus and Russia. ALTOROS specializes on providing value-added e-commerce and web-based software development and offshore software outsourcing services to emerging enterprises helping them successfully plan and implement business initiatives.

Contact Us for more information.

Node: Column types, Next: Functions, Prev: Language Structure, Up: Reference
Column Types
 
MySQL supports a number of column types, which may be grouped into three categories: numeric types, date and time types, and string (character) types.  This section first gives an overview of the types available and summarises the storage requirements for each column type, then provides a more detailed description of the properties of the types in each category.  The overview is intentionally brief.  The more detailed descriptions should be consulted for additional information about particular column types, such as the allowable formats in which you can specify values.
 
The column types supported by MySQL are listed below.  The following code letters are used in the descriptions:
 
M
Indicates the maximum display size.  The maximum legal display size is 255.
 
D
Applies to floating-point types and indicates the number of digits following the decimal point.  The maximum possible value is 30, but should be no greater than M-2.
 
Square brackets ([ and ]) indicate parts of type specifiers that are optional.
 
 
Note that if you specify ZEROFILL for a column, MySQL will automatically add the UNSIGNED attribute to the column.
 
Warning: you should be aware that when you use subtraction between integer values where one is of type UNSIGNED, the result will be unsigned! See Cast Functions.
 
 
 
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255.
 
 
BIT
BOOL
These are synonyms for TINYINT(1).
 
 
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535.
 
 
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
A medium-size integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215.
 
 
INT[(M)] [UNSIGNED] [ZEROFILL]
A normal-size integer. The signed range is -2147483648 to 2147483647.  The unsigned range is 0 to 4294967295.
 
 
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
This is a synonym for INT.
 
 
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.
 
Some things you should be aware of with respect to BIGINT columns:
 
      ·      All arithmetic is done using signed BIGINT or DOUBLE values, so you shouldn't use unsigned big integers larger than 9223372036854775807 (63 bits) except with bit functions! If you do that, some of the last digits in the result may be wrong because of rounding errors when converting the BIGINT to a DOUBLE.
MySQL 4.0 can handle BIGINT in the following cases:
      ·      Use integers to store big unsigned values in a BIGINT column.
 
      ·      In MIN(big_int_column) and MAX(big_int_column).
 
      ·      When using operators (+, -, *, etc.) where both operands are integers.
 
      ·      You can always store an exact integer value in a BIGINT column by storing it as a string.  In this case, MySQL will perform a string-to-number conversion that involves no intermediate double representation.
 
      ·      -, +, and * will use BIGINT arithmetic when both arguments are integer values!  This means that if you multiply two big integers (or results from functions that return integers) you may get unexpected results when the result is larger than 9223372036854775807.
 
 
 
FLOAT(precision) [UNSIGNED] [ZEROFILL]
A floating-point number.  precision can be <=24 for a single-precision floating-point number and between 25 and 53 for a double-precision floating-point number. These types are like the FLOAT and DOUBLE types described immediately below.  FLOAT(X) has the same range as the corresponding FLOAT and DOUBLE types, but the display size and number of decimals are undefined.
 
In MySQL Version 3.23, this is a true floating-point value.  In earlier MySQL versions, FLOAT(precision) always has 2 decimals.
 
Note that using FLOAT may give you some unexpected problems as all calculations in MySQL are done with double precision.  See No matching rows.
 
This syntax is provided for ODBC compatibility.
 
 
 
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
A small (single-precision) floating-point number.  Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38.  If UNSIGNED is specified, negative values are disallowed.  The M is the display width and D is the number of decimals.  FLOAT without arguments or FLOAT(X) where X <= 24 stands for a single-precision floating-point number.
 
 
 
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
A normal-size (double-precision) floating-point number.  Allowable values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308.  If UNSIGNED is specified, negative values are disallowed.  The M is the display width and D is the number of decimals.  DOUBLE without arguments or FLOAT(X) where 25 <= X <= 53 stands for a double-precision floating-point number.
 
 
 
DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]
REAL[(M,D)] [UNSIGNED] [ZEROFILL]
These are synonyms for DOUBLE.
 
 
 
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
An unpacked floating-point number.  Behaves like a CHAR column: "unpacked" means the number is stored as a string, using one character for each digit of the value.  The decimal point and, for negative numbers, the - sign, are not counted in M (but space for these is reserved). If D is 0, values will have no decimal point or fractional part.  The maximum range of DECIMAL values is the same as for DOUBLE, but the actual range for a given DECIMAL column may be constrained by the choice of M and D.  If UNSIGNED is specified, negative values are disallowed.
 
If D is omitted, the default is 0.  If M is omitted, the default is 10.
 
Prior to MySQL Version 3.23, the M argument must include the space needed for the sign and the decimal point.
 
 
 
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
These are synonyms for DECIMAL.
 
 
 
DATE
A date.  The supported range is '1000-01-01' to '9999-12-31'.  MySQL displays DATE values in 'YYYY-MM-DD' format, but allows you to assign values to DATE columns using either strings or numbers. See DATETIME.
 
 
 
DATETIME
A date and time combination.  The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.  MySQL displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format, but allows you to assign values to DATETIME columns using either strings or numbers.  See DATETIME.
 
 
 
TIMESTAMP[(M)]
A timestamp.  The range is '1970-01-01 00:00:00' to sometime in the year 2037MySQL displays TIMESTAMP values in YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, or YYMMDD format, depending on whether M is 14 (or missing), 12, 8, or 6, but allows you to assign values to TIMESTAMP columns using either strings or numbers.  A TIMESTAMP column is useful for recording the date and time of an INSERT or UPDATE operation because it is automatically set to the date and time of the most recent operation if you don't give it a value yourself.  You can also set it to the current date and time by assigning it a NULL value.  See Date and time types.
 
The M argument affects only how a TIMESTAMP column is displayed; its values always are stored using 4 bytes each.
 
Note that TIMESTAMP(M) columns where M is 8 or 14 are reported to be numbers while other TIMESTAMP(M) columns are reported to be strings.  This is just to ensure that one can reliably dump and restore the table with these types!  See DATETIME.
 
 
 
TIME
A time.  The range is '-838:59:59' to '838:59:59'.  MySQL displays TIME values in 'HH:MM:SS' format, but allows you to assign values to TIME columns using either strings or numbers. See TIME.
 
 
 
YEAR[(2|4)]
A year in 2- or 4-digit format (default is 4-digit).  The allowable values are 1901 to 2155, 0000 in the 4-digit year format, and 1970-2069 if you use the 2-digit format (70-69).  MySQL displays YEAR values in YYYY format, but allows you to assign values to YEAR columns using either strings or numbers. (The YEAR type is unavailable prior to MySQL Version 3.22.) See YEAR.
 
 
 
[NATIONAL] CHAR(M) [BINARY]
A fixed-length string that is always right-padded with spaces to the specified length when stored. The range of M is 0 to 255 characters (1 to 255 prior to MySQL Version 3.23).  Trailing spaces are removed when the value is retrieved. CHAR values are sorted and compared in case-insensitive fashion according to the default character set unless the BINARY keyword is given.
 
NATIONAL CHAR (or its equivalent short form, NCHAR) is the ANSI SQL way to define that a CHAR column should use the default CHARACTER set.  This is the default in MySQL.
 
CHAR is a shorthand for CHARACTER.
 
MySQL allows you to create a column of type CHAR(0). This is mainly useful when you have to be compliant with some old applications that depend on the existence of a column but that do not actually use the value.  This is also quite nice when you need a column that only can take 2 values: A CHAR(0), that is not defined as NOT NULL, will occupy only one bit and can take only 2 values: NULL or "". See CHAR.
 
CHAR
This is a synonym for CHAR(1).
 
 
 
[NATIONAL] VARCHAR(M) [BINARY]
A variable-length string.  Note: trailing spaces are removed when the value is stored (this differs from the ANSI SQL specification). The range of M is 0 to 255 characters (1 to 255 prior to MySQL Version 4.0.2).  VARCHAR values are sorted and compared in case-insensitive fashion unless the BINARY keyword is given. See Silent column changes.
 
VARCHAR is a shorthand for CHARACTER VARYING.  See CHAR.
 
 
 
TINYBLOB
TINYTEXT
A BLOB or TEXT column with a maximum length of 255 (2^8 - 1) characters. See Silent column changes. See BLOB.
 
 
 
BLOB
TEXT
A BLOB or TEXT column with a maximum length of 65535 (2^16 - 1) characters. See Silent column changes. See BLOB.
 
 
 
MEDIUMBLOB
MEDIUMTEXT
A BLOB or TEXT column with a maximum length of 16777215 (2^24 - 1) characters. See Silent column changes. See BLOB.
 
 
 
LONGBLOB
LONGTEXT
A BLOB or TEXT column with a maximum length of 4294967295 (2^32 - 1) characters. See Silent column changes.  Note that because the server/client protocol and MyISAM tables has currently a limit of 16M per communication packet / table row, you can't yet use this the whole range of this type. See BLOB.
 
 
 
ENUM('value1','value2',...)
An enumeration.  A string object that can have only one value, chosen from the list of values 'value1', 'value2', ..., NULL or the special "" error value.  An ENUM can have a maximum of 65535 distinct values. See ENUM.
 
 
 
SET('value1','value2',...)
A set.  A string object that can have zero or more values, each of which must be chosen from the list of values 'value1', 'value2', ... A SET can have a maximum of 64 members. See SET.
 
 
Numeric types      Numeric types
Date and time types      Date and time types
String types      String types
Choosing types      Choosing the right type for a column
Other-vendor column types      Using column types from other database engines
Storage requirements      Column type storage requirements
 
Offshore Software Outsourcing company Russia Florida Massachusetts Boston Belarus, Offshore Software Development Services, Offshore Programming and IT OutsourcingOffshore Development, Programming  Services, Tampa FL Russia, E-commerce, Database, CRM, Financial Insurance Health Care Real EstateOffshore Software Development Services, Software Outsourcing Russia
HOME PAGE, Offshore Software Outsourcing Company, offshore IT outsourcing services, offshore 
software development Russia Massachusetts Florida New York CT VT RI software development