欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql int 溢出

錢衛國2年前10瀏覽0評論

MySQL中的int類型通常用于存儲整數值,其長度為4個字節或32位,可以存儲范圍為-2147483648到2147483647的值。但是,當向一個int類型的列中插入一個大于該范圍的值時,就會發生int溢出的問題。

// 創建一個表t,其中有一個int類型的列
CREATE TABLE t (
id INT(11) NOT NULL AUTO_INCREMENT,
num INT(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
// 向表t中插入一條數據
INSERT INTO t (num) VALUES (2147483648);
// 查詢表t中的數據
SELECT * FROM t;

上面的代碼在向表t中插入值為2147483648的數據時,由于該值已經超出了int類型的存儲范圍,MySQL會將其轉換為-2147483648存儲。因此,查詢表t時會發現實際存儲的值為-2147483648。

為了避免int溢出的問題,我們可以使用bigint類型來存儲更大的整數值。其長度為8個字節或64位,可以存儲范圍為-9223372036854775808到9223372036854775807的值。使用bigint類型的示例代碼如下:

// 創建一個表t,其中有一個bigint類型的列
CREATE TABLE t (
id INT(11) NOT NULL AUTO_INCREMENT,
num BIGINT(20) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
// 向表t中插入一條數據
INSERT INTO t (num) VALUES (2147483648);
// 查詢表t中的數據
SELECT * FROM t;

上面的代碼中,我們將表t中的num列類型改為bigint,并向其中插入值為2147483648的數據。查詢表t時可以發現,實際存儲的值為2147483648,避免了int溢出的問題。