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填充;

整型类型的选择

根据业务进行相应的选择,以下举例而已:

发布了178 篇原创文章 · 获赞 132 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/Soinice/article/details/96035891