1. 程式人生 > >mysql中int型別的寬度M解析

mysql中int型別的寬度M解析

一直以來在MYSQL建表的時候都有一個困惑,那就是關於int型別。int(M)這個M代表什麼?

比如我定義一個文章的主鍵news_id為int(8)為什麼要定義為8?如果我儲存一個位數為10的3445667788,發現實際也是可以儲存的。於是檢視mysql的手冊,發現有這樣一段話:M指示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與儲存大小或型別包含的值的範圍無關。

顯示寬度,我們可以理解為所儲存數值的位數。比如我設定news_id為int(8),是告訴mysql我要儲存的數值的最大位數是個8位數,但是如果儲存的超過8位數,只要在int型別允許的範圍內(signed型別-2147483648~2147483647,unsigned型別0~4294967295

)也是可以儲存的。比如:



從上面兩個圖可以看出,我儲存了一個超過8位數的int型別資料,還是能夠正常顯示的。那麼問題又來了,這個M既然只要我能保證在所屬範圍之內,我是不是可以隨意去定義了,當然不是的。首先設定M肯定要跟實際的業務資料相關,多設定浪費儲存空間。另外如果你設定了填充0,zerofill的話就可以看出一些端倪:

我們把news_id的寬度設定為3,然後再檢視下看看:


我們看到值為1的左端填充了0,原來預設為0的變成了000.所以如果M設定為某個值,並且設定了zerofill的話,當儲存的長度小於M的話,會自動填充0.所以有時專案裡確實需要儲存類似於001,002...的值時,這個M的設定要符合業務需求。對於tinyint,mediumint,bigint等一樣的理解。

相比較來說,char(n)和varchar(n)型別的這個n代表實際的儲存長度,超過了會被mysql截掉。還是有所區別的。

相關推薦

mysqlint型別寬度M解析

一直以來在MYSQL建表的時候都有一個困惑,那就是關於int型別。int(M)這個M代表什麼? 比如我定義一個文章的主鍵news_id為int(8)為什麼要定義為8?如果我儲存一個位數為10的數344

Mysqlint型別強制插入float型會發生什麼(nctfweb ,mysql

首先建立一個表A,只有一個列,就是a,型別設定為int create table A(a int); 然後強制插入資料5.1和5.5 insert into A values(5.1); insert into A values(5.5); 然後查詢,select * from A;

MySQLint(M)和tinyint(M)數值型別M值的意義

我們建立一個數據表test: mysql> CREATE TABLE test( -> id1 int(1), -> id2 tinyint(1) ->); 我們給id1定義為int,並設定字元長度為1,id2定

關於mysql資料庫int型別(M)括號內值的含義

在一開始接觸MySQL資料庫時,對於int(M)及tinyint(M)兩者數值型別後面的M值理解是最多能夠插入資料庫中的值不能大於M; 後來工作後,也是一邊學習一邊使用,之後的理解是其中的M的意思是插入資料庫中的值的字元長度不能大於M,例如,int(4),想要插入1234,

MySQLint(M)和tinyint(M)數值型別M值的意義(轉載)

首先,我們建立一個數據表test: mysql> CREATE TABLE test( -> id1 int(1), -> id2 tinyint(1) ->); 我們給id1定義為int,並設定字元長度為1,id2定義

mysqlint(M)M的含義

我不認識寫下面這篇文章的外國人,不過確實講清楚了,沒時間翻譯,好在原文不長 7/29/2005, 7:26 pm MySQL has a little know feature for numerical types known as zerofill. This

讓天下沒有難用的資料庫 » Mysql int[M]

我們在定義數字型別的資料型別的時候,往往考慮該數字型別的資料能否裝的下該欄位的最大值,如狀態位的欄位:tinyint,表的主鍵:int,或者bigint,今天在看到開發同學提交表結構設計文件中看到數值型別的欄位定義為int(255),int(20),int(2)當時一下還沒有反映過來,我們知道在my

MysqlintM)、tinyint(M)的M詳解

mysql資料庫中以 :資料型別(m)來約束資料,其中 數字m在不同的資料型別中表示含義是不同的如整形和字元型就是不同的。 整型數系統已經限制了取值範圍,tinyint佔一個位元組有符號的範圍是-128 - 127,無符號的範圍是 從 0 到 255 的整型資料。int佔4

MySQLint(M)的含義

作為對 ANSI/ISO SQL92 標準的一個擴充套件,MySQL 也支援整型型別 TINYINT、MEDIUMINT 和 BIGINT。另外一個擴充套件是 MySQL 支援隨意指定一個整型數值的顯示格式,這通過在型別

mysqlint(3)與int(11)有什麽區別嗎?

png 不足 次方 表示 分享 什麽 否則 數據庫 SQ 註意:這裏的M代表的並不是存儲在數據庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數字,int(11)就會存儲11個長度的數字,這是大錯特錯的。 其實當我們在選擇使用int的類型的時候,不論是i

Makefile的-C和M=解析

轉自:https://www.aliyun.com/jiaocheng/144874.html 摘要:在進行嵌入式開發過程中,經常需要編寫和執行Makefile,且在大型專案開發過程中,一般也都是使用Makefile來進行管理、編譯、執行的,所以對Makefile的讀寫是嵌入式軟體工程師必

C++int型別與String型別的相互轉換

最近經常用到兩種型別的相互轉換,從網上找了一些,彙總一下,以備不時之需 int型別轉換為String型別 方法一:利用sprintf #include <iostream> #include <string> int main() { int n =

(轉載)對比MySQLint、char 以及 varchar 的效能

轉載:https://www.jb51.net/article/148819.htm 網路上有許多似是而非的“謠言”,當然都不是惡意,絕大部分都是開發者不願意自己主動研究,反而輕信其他人的信口之言。 關於資料庫的謠言也有不少,比如“int效能比char高很多”。 我最近針對int

mysqlString型別日期比較

    1、資料庫中欄位createtime型別為String,格式為:06-08-2018 10:50:24;     2、以createtime做條件做時間範圍內的查詢操作:    將String轉為date: <

mysqlint(1)int後面的數字(簡單介紹)

你可能知道int(1)這個長度1並不代表允許儲存的寬度,但對這個長度也沒有真正研究過到底代表什麼。 下面連結是mysql資料型別的儲存和範圍: http://www.runoob.com/mysql/mysql-data-types.html 我們拿int型別舉例: in

mysqlint、bigint、smallint 和 tinyint的區別詳細介紹

mysql中int、bigint、smallint 和 tinyint的區別詳細介紹 1 bytes = 8 bit ,一個位元組最多可以代表的資料長度是2的8次方 11111111 在計算機中也就是 -128到127 1.BIT[M] 位欄位型別,M表示每個值的位數,範圍從1到64,如果M被忽略,

MySQLint(10)和int(11)的區別+示例

我們都知道MySQL中的int(10)和int(11)在寬度上是不一樣的,但是其實區別真不大,因為都是佔用4個位元組,所以範圍都是一樣的,那麼主要的區別在哪兒呢? 今天忽然想到這個問題,因此做了一下測試: 1、建立一個測試用的表test,裡面只有兩個欄位,一個int10,一個int11 2、往表中插

mysqlint型的數字怎麼轉換成字串 以及字串轉換成int

MySQL 數字型別轉換函式(concat/cast)。 1、將Int 轉為varchar經常用 concat函式,比如concat(8,’0′) 得到字串 ’80′。 2、將varchar 轉為Int 用 cast(a as signed) a為varchar型別的字串

Java基礎Int型別變數值互換的幾種方法

    在很多時候,我們會使用到將兩個整型變數值進行互換,比如氣泡排序,通過判斷來將陣列變數的值逐步交換,那麼怎麼交換值才能最有效最節省空間呢?   首先,我們會想到的,用一個零時變數來做中間的過度儲存空間,這是很容易想到的方法,實現如下:       int i = 10;  //宣告變數 i,並給 i 賦

mysqlint(10)代表什麼意思

int(M) 在 integer 資料型別中,M 表示最大顯示寬度。 在 int(M) 中,M 的值跟 int(M) 所佔多少儲存空間並無任何關係。 int(3)、int(4)、int(8) 在磁碟上都是佔用 4 btyes 的儲存空間。說白了,除了顯示給使用者的方式有點不同