MySql : Int(11), Int(11 +number)
If we're using Int(11) as a data-type in MySql then by default it is signed integer range between (-2147483648) and (2147483647)It's same as any object oriented programming language's "Integer" datatype, means it'll take "4 byte" storage
If we make this "Int(11) as unsigned number" then it ranges between (0 and 4294967295)
Example:
1. First let's create a table
CREATE TABLE TableToDelete (
FullName VARCHAR(256) DEFAULT NULL,
SignedId INT(11) DEFAULT NULL,
UnsignedId INT(11) UNSIGNED DEFAULT NULL,
IdIntMoreThan11 INT(20) DEFAULT NULL,
IdZerofill INT(20) UNSIGNED ZEROFILL DEFAULT NULL
)
2. Insert some records with value, let's say "1234567891234567"
INSERT INTO TableToDelete (SignedId, UnsignedId, IdIntMorethan11, IdZerofill)
VALUES (1234567891234567, 1234567891234567, 1234567891234567, 1234567891234567)
because number : "1234567891234567" exceeds the max length of "signed integer : 2147483647" as well as of "unsigned integer : 4294967295". This insert statement will get executed successfully (without any error).
Here our inserted records will be
SignedId -> 2147483647
UnsignedId -> 4294967295
IdIntMoreThan11 -> 2147483647
IdZerofill -> 00000000004294967295
So what is the meaning of declaring "Int(20) or something like Int(11 + number)"?
In this case we've declared column "IdZerofill" with "INT(20)" as "UNSIGNED ZEROFILL DEFAULT NULL"
mean what ever the value we want to insert into "IdZeroFill" column we can insert as we used to insert with normal int data-type, but MySql will pad it with "0" on left side. In this case you can see the result in "IdZeroFill" as "00000000004294967295" which is left padded by "0"
If we're not including "zerofill" keyword while declaring it, it'll behave like normal int datatype.
Comments
Post a Comment