MySQL 的数据类型
正确定义表中的字段对于数据库的整体优化非常重要。您应该只使用真正需要使用的字段的类型和大小。例如,如果知道只使用2个字符,则不要定义10个字符宽的字段。这些类型的字段(或列)也称为数据类型,位于要存储在这些字段中的数据类型之后。
MySQL使用许多不同的数据类型,分为三类:
1、数字类型-Numeric
2、日期和时间-Date and Time
3、字符串-String Types
下面让我们详细看看这些不同的数据类型。
数值数据类型
MySQL使用所有ANSI SQL标准数值数据类型,所以如果你到MySQL来自一个不同的数据库系统,这些定义将会熟悉你。
下面的列表显示了常见的数值数据类型和它们的描述:
1、INT−一个正常大小的整数,可以是有符号的,也可以是无符号的。如果已签名,则允许的范围为-2147483648到2147483647。如果未签名,则允许的范围为0到4294967295。您最多可以指定11位数字的宽度。
2、TINYINT−可以是有符号或无符号的非常小的整数。如果有符号,允许的范围为-128到127。如果未签名,则允许的范围为0到255。您最多可以指定4位数字的宽度。
3、SMALLINT−可以是有符号或无符号的小整数。如果有符号,允许的范围为-32768到32767。如果未签名,则允许的范围为0到65535。您最多可以指定5位数字的宽度。
4、MEDIUMINT−一个中等大小的整数,可以是有符号的,也可以是无符号的。如果已签名,则允许的范围为-8388608到8388607。如果未签名,则允许的范围为0到16777215。您最多可以指定9位数字的宽度。
5、BIGINT−可以是有符号或无符号的大整数。如果已签名,则允许的范围为-9223372036854775808到9223372036854775807。如果未签名,则允许的范围为0到18446744073709551615。您可以指定最多20位的宽度。
6、FLOAT(M, D)−不能无符号的浮点数。您可以定义显示长度(M)和小数位数(D)。这不是必需的,默认为10,2,其中2是小数位数,10是总位数(包括小数)。小数精度可以达到24位浮点。
7、DOUBLE(M, D)−不能无符号的双精度浮点数。 您可以定义显示长度(M)和小数(D)的数量。这不是必需的,将默认为16,4,4是小数的数量。 小数精度可以去53双的地方。 真正的是一个双重的同义词。
8、DECIMAL(M, D)−不能无符号的未打包浮点数。在未打包的小数中,每个小数对应一个字节。需要定义显示长度(M)和小数位数(D)。NUMERIC是十进制的同义词。
日期和时间类型
MySQL日期和时间数据类型如下:
1、DATE − YYYY-MM-DD格式的日期,介于1000-01-01和9999-12-31之间。例如,1973年12月30日将存储为1973-12-30。
2、DATETIME − YYYY-MM-DD HH:MM:SS格式的日期和时间组合,介于1000-01-01 00:00:00和9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30将存储为1973-12-30 15:30:00。
3、TIMESTAMP - 1970年1月1日午夜到2037年某个时间之间的时间戳。这看起来像以前的DATETIME格式,只是数字之间没有连字符;1973年12月30日下午3:30将存储为19731230153000(YYYYMMDDHHMMSS)。
4、TIME - 以HH:MM:SS格式存储时间。
5、YEAR(M) - 以2位或4位格式存储一年。如果长度指定为2(例如,年份(2)),则年份可以介于1970年到2069年(70到69年)之间。如果长度指定为4,则年份可以是1901到2155。默认长度为4。
字符串类型
虽然数字和日期类型很有趣,但您要存储的大多数数据都是字符串格式。此列表描述MySQL中常见的字符串数据类型。
1、CHAR(M) - 一个长度在1到255个字符之间的固定长度字符串(例如CHAR(5)),在存储时用空格右键填充到指定长度。不需要定义长度,但默认值为1。
2、VARCHAR(M) - 长度介于1到255个字符之间的可变长度字符串。例如,VARCHAR(25)。创建VARCHAR字段时必须定义长度。
3、BLOB or TEXT - 最大长度为65535个字符的字段。Blob是“二进制大对象”,用于存储大量二进制数据,如图像或其他类型的文件。定义为文本的字段也包含大量数据。两者之间的区别在于,存储数据的排序和比较在blob上区分大小写,而在文本字段中不区分大小写。不能使用BLOB或TEXT指定长度。
4、TINYBLOB or TINYTEXT - 最大长度为255个字符的BLOB或文本列。不能使用TINYBLOB或TINYTEXT指定长度。
5、MEDIUMBLOB or MEDIUMTEXT - 最大长度为16777215个字符的BLOB或文本列。不能使用MEDIUMBLOB或MEDIUMTEXT指定长度。
6、LONGBLOB or LONGTEXT - 最大长度为4294967295个字符的BLOB或文本列。不能使用LONGBLOB或LONGTEXT指定长度。
7、ENUM - 枚举,这是列表的一个奇特术语。定义枚举时,您正在创建一个必须从中选择值(也可以为NULL)的项目列表。例如,如果希望字段包含“A”或“B”或“C”,则可以将枚举定义为ENUM('A'、'B'、'C'),并且只有这些值(或NULL)才能填充该字段。