mysql支持的数据类型:
数值型,如INT,BIGINT,FLOAT和decimal
日期和时间类型,如DATE,TIME和TIMESTAMP等
字符串类型,如VARCHAR,CHAR和BLOB
空间数据类型,如GEOMETRY,POINT和POLYGON
JSON数据类型
枚举类型(Enumeration Types):适合存储从预定义列表中选择的值。ENUM
允许从一个列表中选择一个固定数量的值进行存储。
集合类型(Set Types):与枚举类型类似,但允许选择多个值进行存储。SET
允许从一个预定义的值集合中选择多个值进行存储。
数据类型的选择取决于字段存储的具体数据:
1、确保正确存储数据
2、空间利用最优
如同一个数据可能有多种存储方式,选择最合适的方式:
如phone_number,为什么选择VARCHAR(20)
CHAR
:固定长度的字符串类型。它始终使用指定的长度进行存储,不管实际字符串长度是多少,如果字符串长度小于指定长度,则会用空格进行填充。VARCHAR
:可变长度的字符串类型。它根据实际的字符串长度来进行存储,不会浪费存储空间。
举几个例子:
-
整数类型:
- 如果你需要存储员工的年龄,可以选择
TINYINT
,因为年龄通常在 0 到 127 之间。 - 如果你需要存储订单数量,可以选择
INT
,因为订单数量可能会很大,而INT
能够容纳较大的整数范围。
- 如果你需要存储员工的年龄,可以选择
-
浮点数类型:
- 如果你需要存储商品的价格,可以选择
DECIMAL
,因为商品价格需要精确到小数点后几位,而DECIMAL
提供了固定的精度。 - 如果你需要存储科学测量数据,可以选择
DOUBLE
,因为科学测量数据可能需要较高的精度。
- 如果你需要存储商品的价格,可以选择
-
字符串类型:
- 如果你需要存储用户的姓氏,可以选择
VARCHAR
,因为姓氏的长度可能会有所不同。 - 如果你需要存储邮政编码,可以选择
CHAR(6)
,因为邮政编码通常是固定长度的。
- 如果你需要存储用户的姓氏,可以选择
-
日期和时间类型:
- 如果你需要存储订单的创建日期,可以选择
DATETIME
,因为它可以同时存储日期和时间信息。 - 如果你只需要存储时间信息,比如存储开店时间,可以选择
TIME
。
- 如果你需要存储订单的创建日期,可以选择
-
枚举类型:
- 如果你需要存储用户的性别信息,可以选择
ENUM('男', '女', '其他')
,因为性别通常只有几个固定的取值。
- 如果你需要存储用户的性别信息,可以选择
-
集合类型:
- 如果你需要存储用户的兴趣爱好,可以选择
SET('篮球', '足球', '游泳', '登山')
,因为用户可能有多个兴趣爱好。
- 如果你需要存储用户的兴趣爱好,可以选择