1.数据类型的作用
数据类型的作用:
• 决定了存储数据时应该开辟的空间大小。
• 决定了如何识别一个特定的二进制序列。
• 决定了数据的取值范围。
2.数据类型分类
注:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时,数据库会自动将其转换成tinyint(1)的数据类型,其实这个就是变相的bool类型,因为tinyint(1)只有1和0两种取值,可以分别对应bool类型的true和false。
3.数值类型
3.1.tinyint类型
有符号tinyint范围测试:
创建一个表,表当中包含一个tinyint类型的列,默认其为有符号类型。如下:
由于tinyint类型占用1字节,因此有符号tinyint的取值范围为-128~127,插入该范围内的数据时都能成功插入。如下:
如果插入的数据不在-128~127范围内,那么插入数据时就会产生报错。如下:
注:c语言中,如果将200赋值给char类型的变量a,编译器会告警,然后将200的二进制补码截断并赋值给变量a。在mysql中,如果将200赋值给tinyint类型的变量a,编译器会直接报错。
在mysql中,如果插入的数据不符合要求,mysql会直接终止操作。因为mysql本身就是存储数据的,如果允许自由截断,那么mysql中的数据可信度就不高了。
无符号tinyint范围测试:
创建一个表,表当中包含一个tinyint类型的列,并指定其为无符号类型。如下:
由于tinyint类型占用1字节,因此无符号tinyint的取值范围为0~255,插入该范围的数据时都能成功插入。如下:
如果插入的数据不在0~255范围内,那么插入数据时就会产生报错。如下:
建议:除非场景要求数值类型必须是无符号,否则尽量不要使用无符号,因为有符号的数值类型存不下的数据,其对应的无符号类型同样可能存不下,这时应该直接将数值类型进行提升。