MySQL資料類型--------整數類型實戰

來源:互聯網
上載者:User

標籤:mysql   dba   資料類型   

1. 背景

 * MySQL支援SQL標準整數類型整數(或INT)和SMALLINT。作為標準的擴充,MySQL還支援整數類型TINYINT、MEDIUMINT和BIGINT


2.  整數類型所需的儲存和值範圍

   類型    佔用空間    最小值    最大值

   (位元組) (signed/Unsigned) (signed/Unsigned)
TINYINT -128

127



0 255
SMALLINT 2 -32768 32767


0 65535
MEDIUMINT 3 -8388608 8388607


0 16777215
INT 4 -2147483648 2147483647


0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807


0 18446744073709551615


3. zerofill 屬性遇到整數類型應用

  * 建立zerofill測試表 zerofill_test

mysql> CREATE TABLE zerofill_test(    -> `id` INT(6) ZEROFILL    -> )ENGINE=INNODB CHARSET=utf8mb4;Query OK, 0 rows affected (0.08 sec)


  * 插入數值長度小於6的值

mysql> INSERT INTO zerofill_test SELECT 11111;Query OK, 1 row affected (0.03 sec)Records: 1  Duplicates: 0  Warnings: 0


  * 插入數值長度大於6的值

mysql> INSERT INTO zerofill_test SELECT 2222222;Query OK, 1 row affected (0.04 sec)Records: 1  Duplicates: 0  Warnings: 0

  * 查看zerofill_test表所有的資料

mysql> SELECT * FROM zerofill_test;+---------+| id      |+---------+|  011111 || 2222222 |+---------+2 rows in set (0.01 sec)

  * zerofill總結

   * 當顯示的值長度小於定義時INT定義的長度,高位補0顯示

           * 當顯示的值長度大於定義時INT定義的長度,照常顯示

           * zerofill顯示內容,值不做任何修改

     

4. Unsigned 類型溢出現象

  * 建立unsigned測試表 unsigned_test

mysql> CREATE TABLE unsigned_test(    -> id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,    -> data INT UNSIGNED    -> )ENGINE=INNODB CHARSET=utf8mb4;Query OK, 0 rows affected (0.12 sec)


  * 插入兩行一大一小的值

mysql> INSERT INTO unsigned_test SELECT null, 1;Query OK, 1 row affected (0.03 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> INSERT INTO unsigned_test SELECT null, 2;Query OK, 1 row affected (0.01 sec)Records: 1  Duplicates: 0  Warnings: 0

  * 查看錶中插入的資料值

mysql> SELECT * FROM unsigned_test;+----+------+| id | data |+----+------+|  1 |    1 ||  2 |    2 |+----+------+2 rows in set (0.00 sec)


  * 利用小數值對大數值做減運算 

mysql> SELECT data - (SELECT data FROM unsigned_test where id=2) FROM unsigned_test where id=1;ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in ‘(`mytest`.`unsigned_test`.`data` - (select `mytest`.`unsigned_test`.`data` from `mytest`.`unsigned_test` where 1))‘


5. 整數類型應用總結

   * signed/Unsigned: 是否有符號

   * ZEROFILL: 顯示內容,值不做任何修改

  * 推薦不要使用UNSIGNED, 範圍本質上沒有大的改變

   * UNSIGNED可能會有溢出現象發生

   * 自增INT 類型主鍵建議使用BIGINT


6. 總結


以需求驅動技術,技術本身沒有優略之分,只有業務之分。

本文出自 “sea” 部落格,請務必保留此出處http://lisea.blog.51cto.com/5491873/1943195

MySQL資料類型--------整數類型實戰

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.