欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql中int(1)、int(20)的區(qū)別小結(jié)

 更新時(shí)間:2025年03月04日 10:50:39   作者:李若盛開(kāi)  
本文主要介紹了Mysql中int(1)、int(20)的區(qū)別小結(jié),int后的數(shù)字表示最大顯示寬度,一般int后面的數(shù)字M要配合zerofill一起使用才有效,下面就來(lái)具體介紹一下,感興趣的可以了解一下

在設(shè)計(jì)數(shù)據(jù)庫(kù)表的時(shí)候,經(jīng)常需要設(shè)計(jì)一個(gè)id字段,它的類型一般都是整型int,經(jīng)常會(huì)遇到int(1)、int(20)等。

int的范圍:
有符號(hào)的整型范圍是-2147483648~2147483647
無(wú)符號(hào)的整型范圍是0~4294967295

參看 MySQL 手冊(cè),int(M): M indicates the maximum display width for integer types.
int(M)只是用來(lái)顯示數(shù)據(jù)的寬度,在 integer 數(shù)據(jù)類型中,M 表示最大顯示寬度,一般int后面的數(shù)字M要配合zerofill一起使用才有效。

數(shù)據(jù)準(zhǔn)備

創(chuàng)建測(cè)試表 test_table,包含兩個(gè)測(cè)試字段area_1 int(1)、area_2 int(20):

CREATE TABLE `test_table` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `area_1` int(1) unsigned DEFAULT NULL,
  `area_2` int(20) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

存儲(chǔ)大小

在 MySQL 中 int 類型占4個(gè)字節(jié),對(duì)于無(wú)符號(hào)整形最大值為:2^32-1 = 4294967295,下面看看int(1)、int(20)分別可以存儲(chǔ) int 類型最大值?

INSERT INTO `test_table` (`area_1`, `area_2`) VALUES (4294967295, 4294967295)
> Affected rows: 1
> 查詢時(shí)間: 0.002s

插入成功,int(1)、int(20) 都可以存儲(chǔ) int 類型最大值,說(shuō)明對(duì)存儲(chǔ)大小無(wú)影響。那么1和20用什么作用呢?答案就是對(duì)齊填充,當(dāng)聯(lián)合零填充(zerofill) 使用時(shí),配置的值才會(huì)體現(xiàn)效果。

零填充(zerofill,一般int后面的數(shù)字要配合zerofill一起使用才有效)

所謂零填充就是當(dāng)數(shù)字位小于指定位數(shù)時(shí),使用0填充補(bǔ)全位數(shù),比如指定位數(shù)為4位,數(shù)為23,那么實(shí)際會(huì)被填充為 0023。

將 area_1 和 area_2 字段配置為 zerofill

CREATE TABLE `test_table` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `area_1` int(1) unsigned <strong>zerofill</strong> DEFAULT NULL,
  `area_2` int(20) unsigned <strong>zerofill</strong> DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

可以看到 area_2 不足20位時(shí)使用0補(bǔ)齊到20位,area_1 指定位數(shù)為 1 位實(shí)際并沒(méi)有效果,因?yàn)閿?shù)字至少為1位,對(duì) NULL 不生效。

零填充(zerofill)在一些需要數(shù)字對(duì)齊的場(chǎng)景中可能使用,但實(shí)踐中并不推薦,對(duì)數(shù)據(jù)庫(kù)依賴性太強(qiáng)。

總結(jié)

int后面的數(shù)字不能表示字段的長(zhǎng)度,int(num)一般加上zerofill,才有效果。

一般整型而言,對(duì)于int(1)、int(20) 中指定的位數(shù)并不會(huì)影響字段的存儲(chǔ)大小,而是和零填充(zerofill)聯(lián)合使用實(shí)現(xiàn)對(duì)齊填充,實(shí)際使用中沒(méi)有特殊對(duì)齊需求,配置為int(1)即可。

注意:零填充只針對(duì)于整型,字符串(char、varchar)的“長(zhǎng)度”是會(huì)受到真正的限制。Char(n)、Varchar(n),括號(hào)里的N表示的是該字段可容納的最大字符數(shù),簡(jiǎn)單來(lái)說(shuō)就是能存入多少個(gè)字符,n的取值范圍為:0-255。

到此這篇關(guān)于Mysql中int(1)、int(20)的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Mysql int(1) int(20)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql轉(zhuǎn)PostgreSQL注意事項(xiàng)及說(shuō)明

    Mysql轉(zhuǎn)PostgreSQL注意事項(xiàng)及說(shuō)明

    這篇文章主要介紹了Mysql轉(zhuǎn)PostgreSQL注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-10-10
  • linux使用mysqldump+expect+crontab實(shí)現(xiàn)mysql周期冷備份思路詳解

    linux使用mysqldump+expect+crontab實(shí)現(xiàn)mysql周期冷備份思路詳解

    這篇文章主要介紹了linux使用mysqldump+expect+crontab實(shí)現(xiàn)mysql周期冷備份,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MyBatis 動(dòng)態(tài)SQL全面詳解

    MyBatis 動(dòng)態(tài)SQL全面詳解

    MyBatis 的強(qiáng)大特性之一便是它的動(dòng)態(tài) SQL。如果你有使用 JDBC 或其他類似框架的經(jīng)驗(yàn),你就能體會(huì)到根據(jù)不同條件拼接 SQL 語(yǔ)句有多么痛苦。拼接的時(shí)候要確保不能忘了必要的空格,還要注意省掉列名列表最后的逗號(hào)。利用動(dòng)態(tài) SQL 這一特性可以徹底擺脫這種痛苦
    2021-09-09
  • MySQL數(shù)據(jù)庫(kù)定時(shí)備份的幾種實(shí)現(xiàn)方法

    MySQL數(shù)據(jù)庫(kù)定時(shí)備份的幾種實(shí)現(xiàn)方法

    本文主要介紹了MySQL數(shù)據(jù)庫(kù)定時(shí)備份的幾種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法

    Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法

    下面小編就為大家?guī)?lái)一篇Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • MySQL單表恢復(fù)的步驟

    MySQL單表恢復(fù)的步驟

    這篇文章主要介紹了MySQL單表恢復(fù)的步驟,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • Mysql8報(bào)錯(cuò)this is incompatible with sql_mode=only_full_group_by問(wèn)題

    Mysql8報(bào)錯(cuò)this is incompatible with sql_mo

    這篇文章主要介紹了Mysql8報(bào)錯(cuò)this is incompatible with sql_mode=only_full_group_by問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mysql日常鎖表之flush_tables詳解

    mysql日常鎖表之flush_tables詳解

    Flushtables和Flushtableswithreadlock是MySQL中的兩個(gè)命令,用于關(guān)閉表對(duì)象和清空查詢緩存,它們會(huì)等待所有正在運(yùn)行的SQL請(qǐng)求執(zhí)行結(jié)束,如果請(qǐng)求操作的表集合為{tables},則會(huì)阻塞其他會(huì)話對(duì){tables}表上的所有操作,包括查詢和寫(xiě)操作
    2024-11-11
  • MySQL 實(shí)現(xiàn)lastInfdexOf的功能案例

    MySQL 實(shí)現(xiàn)lastInfdexOf的功能案例

    這篇文章主要介紹了MySQL 實(shí)現(xiàn)lastInfdexOf的功能案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 銀河麒麟V10安裝MySQL5.7的詳細(xì)過(guò)程

    銀河麒麟V10安裝MySQL5.7的詳細(xì)過(guò)程

    這篇文章主要介紹了銀河麒麟V10安裝MySQL5.7,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評(píng)論