sqlintegersizeint

Whats the size of an SQL Int(N)?


Simple question. I have tried searching on Google and after about 6 searches, I figured it would be faster here.

How big is an int in SQL?

-- table creation statement.
intcolumn INT(N) NOT NULL,
-- more table creation statement.

How big is that INT(N) element? What's its range? Is it 2^N or is it N Bytes long? (2 ^ 8N)? Or even something else I have no idea about?


Solution

  • It depends on the database. MySQL has an extension where INT(N) means an INT with a display width of 4 decimal digits. This information is maintained in the metadata.

    The INT itself is still 4 bytes, and values 10000 and greater can be stored (and probably displayed, but this depends how the application uses the result set).

    EDIT: See the linked documentation for more information. In particular, note that storing larger-than-display width values can cause problems (in some versions of MySQL) if ZEROFILL is used: "If you store values larger than the display width in an integer column that has the ZEROFILL attribute, you may experience problems when MySQL generates temporary tables for some complicated joins. In these cases, MySQL assumes that the data values fit within the column display width."