自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你對(duì)MySQL的int(11)真的了解嗎?

開發(fā) 前端
在數(shù)據(jù)庫設(shè)計(jì)中,INT(3)和INT(11)的區(qū)別主要在于它們控制輸出時(shí)的顯示寬度。實(shí)際的存儲(chǔ)大小是相同的,都占用4個(gè)字節(jié)。

最近在網(wǎng)上看到一篇關(guān)于int(3)和int(11)區(qū)別的帖子,我第一反應(yīng)這不就是它們之間主要涉及存儲(chǔ)整型數(shù)據(jù)時(shí)所需的位數(shù),即3位和11位的差異。然而,經(jīng)過詳細(xì)閱讀文章并進(jìn)行進(jìn)一步的資料查詢和測(cè)試后,我才發(fā)現(xiàn)我一直以來對(duì)于int(3)的理解存在誤差。今天,我打算與家人分享這一新的認(rèn)識(shí)。

圖片mysql-int.jpg

MYSQL int 數(shù)據(jù)存儲(chǔ)范圍

首先,需要明確的是,int(3)和int(11)都是表示整數(shù)類型,而不是定義整數(shù)的存儲(chǔ)長(zhǎng)度。在MySQL中,INT類型占據(jù)4個(gè)字節(jié)(32位),可以存儲(chǔ)范圍是-2^31到2^31-1(約-2.1億到2.1億),這個(gè)范圍是固定的,不受括號(hào)中數(shù)字的影響。

顯示寬度

int(3)和int(11) 區(qū)別在于顯示寬度的影響。當(dāng)我們定義一個(gè)字段為int(3)時(shí),這個(gè)數(shù)字表示的是在使用ZEROFILL填充字符時(shí)的顯示寬度,而不是實(shí)際存儲(chǔ)的整數(shù)位數(shù)。使用ZEROFILL會(huì)在數(shù)字不足指定寬度時(shí),在前面用零進(jìn)行填充。

我們可以在mysql(5.7)中創(chuàng)建數(shù)據(jù)查看下具體的效果:

創(chuàng)建表:

CREATE TABLE `int_test1` (
  `int_3` int(3) ,
  `int_11` int(11) ,
  `int_zf_3` int(3)  ZEROFILL ,
  `int_zf_11` int(11)  ZEROFILL 
);

添加數(shù)據(jù):

INSERT INTO int_test1(int_3,int_11,int_zf_3,int_zf_11) VALUES 
(1,1,1,1),
(2365,2365,2365,2365);

查看數(shù)據(jù):

圖片圖片

_20240127224156.jpg

可以看到,int() 括號(hào)中的數(shù)字是在位數(shù)不足時(shí)如果使用ZEROFILL的話會(huì)在前面用零進(jìn)行填充,補(bǔ)齊到括號(hào)中數(shù)字的位數(shù)。

注意事項(xiàng)

  • 使用ZEROFILL填充字段 時(shí)插入負(fù)數(shù)報(bào)錯(cuò)

因?yàn)閆EROFILL屬性只適用于非負(fù)整數(shù)。所以當(dāng)我們插入負(fù)數(shù)時(shí)會(huì)報(bào)錯(cuò)。

圖片圖片

我們打開表的DDl,就可以看到,我們?cè)O(shè)置ZEROFILL的時(shí)候他會(huì)自動(dòng)設(shè)置為unsigned(無符號(hào))

圖片圖片

  • ZEROFILL只在整數(shù)類型上有效,對(duì)于其他數(shù)據(jù)類型(如浮點(diǎn)數(shù))不適用。
  • 在mysql8.0 中,只有設(shè)置了ZEROFILL,才能看到int(),否則都是int

實(shí)際應(yīng)用

我們?cè)趯?shí)際生產(chǎn)環(huán)境使用查詢的時(shí)候通常要把數(shù)據(jù)庫的int數(shù)據(jù)轉(zhuǎn)化為java對(duì)象的Integer,所以ZEROFILL在實(shí)際生產(chǎn)中使用的很少,其次我們需要給數(shù)據(jù)補(bǔ)齊位數(shù)的時(shí)候通常是在程序中做處理,不會(huì)依賴數(shù)據(jù)庫,這樣我們的業(yè)務(wù)才能更靈活。

總結(jié)

在數(shù)據(jù)庫設(shè)計(jì)中,INT(3)和INT(11)的區(qū)別主要在于它們控制輸出時(shí)的顯示寬度。實(shí)際的存儲(chǔ)大小是相同的,都占用4個(gè)字節(jié)。而括號(hào)中的數(shù)字在非ZEROFILL的情況下,只是指定了輸出時(shí)的最小寬度,不足時(shí)會(huì)用空格填充。在ZEROFILL的情況下,還會(huì)影響零填充的總寬度。因此,在選擇使用INT(3)還是INT(11)時(shí),主要考慮的是對(duì)數(shù)據(jù)的顯示控制需求。

責(zé)任編輯:武曉燕 來源: 修己xj
相關(guān)推薦

2021-11-26 08:07:16

MySQL SQL 語句數(shù)據(jù)庫

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫

2014-04-17 16:42:03

DevOps

2025-01-03 08:09:15

2021-01-15 07:44:21

SQL注入攻擊黑客

2021-11-09 09:48:13

Logging python模塊

2019-09-16 08:40:42

2014-11-28 10:31:07

Hybrid APP

2020-02-27 10:49:26

HTTPS網(wǎng)絡(luò)協(xié)議TCP

2023-03-16 10:49:55

2023-11-01 13:48:00

反射java

2018-01-06 10:38:51

Ping抓包 ICMP協(xié)議

2017-10-18 22:01:12

2022-03-14 07:53:27

ELTETL大數(shù)據(jù)

2023-10-24 08:53:24

FutureTas并發(fā)編程

2012-05-31 09:56:54

云安全

2015-07-31 10:35:18

實(shí)時(shí)計(jì)算

2022-12-12 08:46:11

2019-11-06 09:52:01

JavaScript單線程非阻塞

2024-02-02 08:50:20

Node.js元數(shù)據(jù)自動(dòng)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)