在数据库中,经常需要存储一些数字,如商品的库存、销量、价格等,适合用数字类型来保存。数字类型包括整数类型、浮点数类型、定点数类型,BIT(位)类型等,下面分别进行讲解。
1.整数类型
MySQL中的整数类型用于保存整数。根据取值范围的不同,整数类型可分为5种,分别是TINYINT、SMALLINT. MEDIUMINT,INT和BIGINT。不同整数类型所对应的字节大小和取值范围如表3-1所示。
表3-1 MySQL 整数类型
数据类型 | 字节数 | 无符号数的取值范围 | 有符号数的取值范围 |
---|---|---|---|
TINYINT | 1 | 0~255 | -128~127 |
SMALLINT | 2 | 0~65 535 | -32 768~32 767 |
MEDIUMINT | 3 | 0~16 777 215 | -8 388 608~8 388 607 |
INT | 4 | 0~4 294 967 295 | -2 147 483 648~2 147 483 647 |
BIGINT | 8 | 0~18 446 744 073 709 551 615 | -9 223 372 036 854 775 808~ 9 223 372 036 854 775 807 |
从表3-1中可以看出,不同整数类型所占用的字节数和取值范围都是不同的。其中,占用字节数最小的是TINYINT,占用字节数最大的是BIGINT。不同整数类型的取值范围可以根据字节数计算出来,例如,TINYINT类型的整数占用1字节,1字节是8位,那么,TINYINT类型无符号数的最大值就是28-1(即255),有符号数的最大值就是27-1(即127)。同理,可以算出其他不同整数类型的取值范围。
需要注意的是,若使用无符号数据类型,需要在数据类型右边加上UNSIGNED关键字来修饰,例如,INT UNSIGNED表示无符号INT类型。
为了让读者更好理解,下面通过案例的方式演示整数类型的使用及注意事项。
(1)创建my_int表,选取INT和TINYINT两种类型测试。具体SQL语句如下。
mysql> USE mydb;
mysql> CREATE TABLE my_int (
-> int_1 INT,
-> int_2 INT UNSIGNED,
-> int_3 TINYINT,
-> int_4 TINYINT UNSIGNED
-> );
上述SQL语句中,int_1和int_3是有符号类型,int_2和int_4是无符号类型。
(2)插入记录进行测试。当数值在合法的取值范围内时,可以正确插入,反之则无法插入,提示错误信息。具体SQL语句及执行结果如下。
① 插入成功测试
mysql> INSERT INTO my_int VALUES(1000, 1000, 100, 100);
Query OK, 1 row affected (0.00 sec)
② 插入失败测试
mysql&g