MySQL最佳入門 - MySQL數據類型之整型

目錄

數據類型

定義數據類型的本質

數據分類的意義

整數類型

有符號(默認)

無符號

指定最大顯示長度

最大長度

無影響

填充(zerofill)

整型類型的選擇


數據類型

定義數據類型的本質

定義數據類型本質上是在定義列

數據分類的意義

  • 分配合適的存儲空間;
  • 採用不同的操作方法;
  • 對應不同的需求。

整數類型

  • MySQL中提供多種對於數值的數據類型;
  • 不同的數據類型取值範圍不同;
  • 取值範圍越大,需要的存儲空間也越大。

有符號(默認)

創建一個含有tinyint字段的表:

mysql> create table t3
    -> (col1 tinyint
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> show create table t3;
+-------+---------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                |
+-------+---------------------------------------------------------------------------------------------+
| t3    | CREATE TABLE `t3` (
  `col1` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

插入一條127大小的數據:

mysql> insert into t3 values (127);
Query OK, 1 row affected (0.00 sec)

插入一條大於127數值的數據:

mysql> insert into t3 values (255);
Query OK, 1 row affected, 1 warning (0.00 sec)

查詢查看結果:

mysql> select * from t3;
+------+
| col1 |
+------+
|  127 |
|  127 |
+------+
2 rows in set (0.00 sec)

創建 tinyint 默認是有符號的,最大值爲 +127,所以插入大於127的數值默認爲127。

無符號

創建一個表,一個含有tinyint字段,且無符號的表:

mysql> create table t4 
    -> (col1 tinyint unsigned
    -> );
Query OK, 0 rows affected (0.00 sec)

分別插入兩條數據,一條爲 127,一條大於 127的數據:

mysql> insert into t4 values (127);
Query OK, 1 row affected (0.00 sec)

mysql> insert into t4 values (255);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t4;
+------+
| col1 |
+------+
|  127 |
|  255 |
+------+
2 rows in set (0.00 sec)

注:

有無符號在創建表時指定,如果沒有指定,默認創建是有符號的。 

指定最大顯示長度

並不是表示只能插入x數字,表示顯示最長x數字:

最大長度

創建一個長度爲10的int字段的表:

mysql>  create table t5
    -> (col1 int(10));
Query OK, 0 rows affected (0.01 sec)

插入一條長度爲10的數據:

mysql> insert into t5 values (1234567890);
Query OK, 1 row affected (0.01 sec)

插入一條長度大於10的數據:

mysql> insert into t5 values (12345678900);
Query OK, 1 row affected, 1 warning (0.00 sec)

查看數據:

mysql> select * from t5;
+------------+
| col1       |
+------------+
| 1234567890 |
| 2147483647 |
+------------+
3 rows in set (0.00 sec)

超出最大值,賦值默認最大值。

無影響

創建一個長度爲3的int字段的表,分別插入一條長度爲3,和一條長度爲4的數據:

mysql> create table t6 
    -> (col1 int(3));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t6 values(123);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t6 values(1234);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t6;
+------+
| col1 |
+------+
|  123 |
| 1234 |
+------+
2 rows in set (0.00 sec)

填充(zerofill)

創建一個長度爲3的int字段的表(zerofill填充),分別插入三條數據,長度爲別爲3,2,1:

mysql> create table t7 (col1 int(3) zerofill);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t7 values(123),(11),(1);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t7;
+------+
| col1 |
+------+
|  123 |
|  011 |
|  001 |
+------+
3 rows in set (0.00 sec)

顯示長度,如果小於3,前面會用0填充;

整型類型的選擇

根據業務進行相應的選擇,以下舉例而已:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章