MySQL中int(10) 的 10代表什么
在 MySQL 中,我們定義int類型時(shí)需要設(shè)置長(zhǎng)度,比如INT(10),那么10 到底代表什么?如果超過(guò)這個(gè)范圍會(huì)出現(xiàn)什么問(wèn)題?這篇文章我們來(lái)詳細(xì)地聊一聊。
1. 含義
在數(shù)據(jù)類型如 INT 后面的括號(hào)中的數(shù)字(例如 INT(10))指定了顯示寬度,即當(dāng)使用 ZEROFILL 屬性時(shí),系統(tǒng)會(huì)在數(shù)值前補(bǔ)零以達(dá)到指定的寬度。
- 存儲(chǔ)空間:
INT數(shù)據(jù)類型總是占用 4 字節(jié)(32 位),無(wú)論顯示寬度是多少。 - 取值范圍:對(duì)于有符號(hào)的
INT,范圍是-2147483648到2147483647;對(duì)于無(wú)符號(hào)的INT UNSIGNED,范圍是0到4294967295。顯示寬度不會(huì)改變這一范圍。
2.ZEROFILL的應(yīng)用
當(dāng)在 INT 類型后使用 ZEROFILL 時(shí),MySQL 會(huì)在數(shù)值前補(bǔ)零,以符合指定的顯示寬度。如下示例:
CREATE TABLE users ( id INT(10) ZEROFILL, name VARCHAR(50) );
插入數(shù)據(jù):
INSERT INTO users (id, name) VALUES (123, 'Alice');
查詢結(jié)果:
+-----------+-------+ | id | name | +-----------+-------+ | 0000000123 | Alice | +-----------+-------+
在這個(gè)例子中,id 字段顯示為 0000000123,達(dá)到 10 位寬度。
3.MySQL 8.0.17 及以后的變化
從 MySQL 8.0.17 版本開(kāi)始,整數(shù)類型的顯示寬度被廢棄(deprecated),即使指定了顯示寬度,默認(rèn)情況下也不再影響存儲(chǔ)或顯示。這意味著:
影響:不再推薦在整數(shù)類型后指定顯示寬度,如
INT(10)中的10將被忽略,除非配合ZEROFILL使用。推薦做法:直接使用
INT而無(wú)需指定顯示寬度,除非確實(shí)需要與現(xiàn)有系統(tǒng)兼容或有特殊需求。
為了更好地理解INT,下面通過(guò)幾個(gè)例子詳細(xì)解釋。
創(chuàng)建表并插入數(shù)據(jù):
CREATE TABLE example (
id INT(10) NOT NULL,
name VARCHAR(50)
);
INSERT INTO example (id, name) VALUES (1, 'John'), (123456, 'Jane');
查詢顯示:
SELECT * FROM example;
結(jié)果:
+-------+-------+ | id | name | +-------+-------+ | 1 | John | | 123456 | Jane | +-------+-------+
在沒(méi)有使用 ZEROFILL 的情況下,顯示寬度 10 并未影響輸出格式。
使用 ZEROFILL 的情況:
CREATE TABLE example_zf (
id INT(10) ZEROFILL NOT NULL,
name VARCHAR(50)
);
INSERT INTO example_zf (id, name) VALUES (1, 'John'), (123456, 'Jane');
SELECT * FROM example_zf;
結(jié)果:
+-----------+-------+ | id | name | +-----------+-------+ | 0000000001 | John | | 0000123456 | Jane | +-----------+-------+
這里,id 字段根據(jù)顯示寬度 10 補(bǔ)充了前導(dǎo)零。
注意:由于 MySQL 8.0.17 及以后的版本中顯示寬度被廢棄,建議在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)避免依賴顯示寬度,除非有明確的需求和兼容性考慮。
5. 總結(jié)
INT(10)中的10代表的是顯示寬度,它用于在與ZEROFILL一起使用時(shí)補(bǔ)充前導(dǎo)零。- 不影響數(shù)值的存儲(chǔ)大小或取值范圍。
- 在 MySQL 8.0.17 及以后版本中,整數(shù)類型的顯示寬度被廢棄,建議不再使用這種方式指定寬度,除非有特定需求。
到此這篇關(guān)于MySQL中int(10) 的 10代表什么的文章就介紹到這了,更多相關(guān)MySQL int(10) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql explain的用法(使用explain優(yōu)化查詢語(yǔ)句)
mysql explain可以幫助你檢查索引和更好的優(yōu)化查詢語(yǔ)句,今天特地學(xué)習(xí)了下mysql explain的用法,需要的朋友可以參考下2017-01-01
MySQL多個(gè)表的關(guān)聯(lián)字段實(shí)現(xiàn)同步更新的解決方案
在對(duì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)進(jìn)行設(shè)計(jì)時(shí),為了提高查詢效率,會(huì)進(jìn)行一些反規(guī)范化設(shè)計(jì),如:設(shè)計(jì)一些冗余字段,但這樣可能會(huì)存在數(shù)據(jù)同步問(wèn)題,故本文給大家介紹了MySQL多個(gè)表的關(guān)聯(lián)字段實(shí)現(xiàn)同步更新的解決方案,需要的朋友可以參考下2024-11-11
MySQL replace函數(shù)替換字符串語(yǔ)句的用法
MySQL replace函數(shù)我們經(jīng)常用到,下面就為您詳細(xì)介紹MySQL replace函數(shù)的用法,希望對(duì)您學(xué)習(xí)MySQL replace函數(shù)方面能有所啟迪。2010-12-12
深入理解MySQL中MVCC與BufferPool緩存機(jī)制
這篇文章主要介紹了深入理解MySQL中MVCC與BufferPool緩存機(jī)制,MySQL默認(rèn)RR隔離級(jí)別就是通過(guò)該機(jī)制來(lái)保證的MVCC,更多主題相關(guān)內(nèi)容,需要的可以參考下面文章內(nèi)容介紹2022-05-05
MySQL數(shù)據(jù)庫(kù)Event定時(shí)執(zhí)行任務(wù)詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)Event定時(shí)執(zhí)行任務(wù)2017-12-12
基于mysql實(shí)現(xiàn)group by取各分組最新一條數(shù)據(jù)
這篇文章主要介紹了基于mysql實(shí)現(xiàn)group by取各分組最新一條數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

