Mysql中int、bigint、smallint 和 tinyint的範圍

來源:互聯網
上載者:User

標籤:mysql

     最近在看mysql最佳化視頻及各方文章,其中有建議為欄位選取合適的整數型別,在看int、bigint、smallint 和 tinyint的選取的時候有點迷惑,剛剛弄清楚,這裡分享一下

     這裡先得說下基礎知識,1位元組(Byte)佔8個位(bit),1個位表示一個二進位的0或者1,

     1個位元組能表示最大的整數是255,怎麼來的?

     1個位元組就是8個二進位的1  “11111111” 轉換成十進位就是255

     int類型佔4個位元組,就是4*8=32位,能表示最大的整數是多少? 

     11111111 11111111 111111111 11111111  

     轉換為十進位就是4294967295 ,不信你自己在表裡面某int類型的欄位裡面手動寫入一                個4294967296,儲存完了再開啟又給你退回到4294967295了。

 然後我們引申出另一個詞:符號。

     帶符號的int類型,表示的範圍是-2147483648到2147483647(在這個範圍裡面能表示4294967295個  數字),不帶符號的int類型範圍是0到4294967295,帶不帶符號其實int能表示的數位"寬度"不        變,只不過帶符號就是用0做為中分點。

     下面就能舉一反三了 

      mediumint佔3個位元組 ,"寬度"為16777215 ,帶符號的以0做為正負中分點

      smallint佔2個位元組,"寬度"為65535

      tinyint 佔1個位元組  "寬度"255 

       

      明白這個我們在以後的資料庫設計中就能更合理的為欄位選取整數型別了,比如在商城系統的訂單表裡,為該表的主鍵應該選什麼合適?我覺得mediumint就夠了,在ecshop裡面,訂單表和商品表這兩個算是比較大的表了,其主鍵用的類型是mediumint。還有一些項目裡面會用到資料字典,或者說是類型表,這裡面的資料肯定不會太多的時候,用tinyint足矣

    

本文出自 “日進跬步,終成大神” 部落格,請務必保留此出處http://8210504.blog.51cto.com/8200504/1585433

Mysql中int、bigint、smallint 和 tinyint的範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.