一、常见的数据类型及分类
其中上述的数值类型包含了整形和浮点型,文本、二进制类型主要是字符串类型。
- 整数类型(Integer Types):
- TINYINT:范围为-128到127或0到255(无符号),用于存储较小的整数值,如存储性别或状态信息。
- SMALLINT:范围为-32768到32767或0到65535(无符号),用于存储较小的整数值,如存储年龄或计数值。
- MEDIUMINT:范围为-8388608到8388607或0到16777215(无符号),适用于中等大小的整数数值存储。
- INT:范围为-2147483648到2147483647或0到4294967295(无符号),适用于一般整数值存储。
- BIGINT:用于存储大整数值,如存储ID或计数值。
- 浮点数类型(Floating-Point Types):
- FLOAT:用于存储单精度浮点数,约占用4个字节的空间。
- DOUBLE:用于存储双精度浮点数,约占用8个字节的空间。
- DECIMAL:用于精确的十进制数值存储,适用于货币或其他需要精确计算的场景。
- 日期与时间类型(Date and Time Types):
- DATE:用于存储日期,格式为'YYYY-MM-DD',如'2000-01-01'。
- TIME:用于存储时间,格式为'HH:MM:SS',如‘18:30:00’。
- DATETIME:用于存储日期和时间,格式为'YYYY-MM-DD HH:MM:SS',如'2000-01-01 18:30:00'。
- 字符串类型(String Types):
- CHAR:用于存储固定长度的字符串,如CHAR(10)可以存储长度为10的字符串。
- VARCHAR:用于存储可变长度的字符串,如VARCHAR(255)可以存储长度为最大255的字符串。
- TEXT:用于存储较长的文本数据,例如文章内容或备注信息。
- 枚举和集合类型:
- 枚举(ENUM)类型:枚举类型允许你从一组预定义的选项中选择一个单独的值。在创建表结构时,你可以指定枚举类型的字段允许的值列表。
- 集合(SET)类型:集合类型允许你从一组预定义的选项中选择多个值,这些值之间用逗号分隔。与枚举类型不同,集合类型允许选择多个选项,而不仅限于一项。
- 其他类型:
- BOOLEAN:在MySQL中没有专门的BOLLEAN类型,通常使用TINTINT(1)来表示bool值,0表示false,1表示true。
二、数值类型
2.1 整型
整型包括以下几种:
它们最根本的区别就是所占用的空间大小不同,也因此导致了能够存储的数据范围不同。
2.1.1 tinyint
先来测试一下tinyint的取值范围。
我们尝试插入一些数据。
在插入合法的范围内是能够正常进行插入的,但是一旦超过tinyint的取值范围,就会不让插入了,而且当插入的数据不是整型时,也是不让插入。
在C/C++中,int tmp = 'a'最多会发出提醒,并不会报错,本质上发生了隐式类型转换。char a = 200也不会报错,会发生截断。即使你存储的数据超出了指定类型的取值范围,也并不会报错,而是发出警告并且存储溢出后进行调整的值。
在数据库中并不想C/C++那样,而是有着严格的要求。mysql的数据类型中,符合条件才会让你操作,不符合条件直接不让操作。在mysql的数据类型中,除了能够满足各种应用场景