MySQL - 数据类型

正确定义表中的字段对于数据库的整体优化非常重要.您应该只使用您真正需要使用的字段的类型和大小.例如,如果您知道只使用2个字符,请不要定义10个字符宽的字段.这些类型的字段(或列)也称为数据类型,在数据类型之后,您将存储在这些字段中.

MySQL使用很多不同的数据类型分为三类 :

  • 数字

  • 日期和时间

  • 字符串类型.

现在让我们详细讨论它们.

数字数据类型

MySQL使用所有标准ANSI SQL数值数据类型,因此如果您从不同的数据库系统访问MySQL,这些定义对您来说将很熟悉.

以下列表显示了常见的数字数据类型及其描述 :

  • INT : 一个正常大小的整数,可以是有符号或无符号的.如果已签名,则允许范围为-2147483648至2147483647.如果未签名,则允许范围为0到4294967295.您可以指定最多11位数的宽度.

  • TINYINT : 一个非常小的整数,可以是有符号或无符号的.如果签名,则允许范围为-128到127.如果是无符号,则允许范围为0到255.您可以指定最多4位数的宽度.

  • SMALLINT : 一个可以签名或未签名的小整数.如果签名,则允许范围为-32768到32767.如果是无符号,则允许范围为0到65535.您可以指定最多5位数的宽度.

  • MEDIUMINT : 一个中等大小的整数,可以是有符号或无符号的.如果已签名,则允许范围为-8388608至8388607.如果未签名,则允许范围为0至16777215.您可以指定最多9位数的宽度.

  • BIGINT : 一个可以签名或未签名的大整数.如果签名,则允许范围为-9223372036854775808至9223372036854775807.如果未签名,则允许范围为0到18446744073709551615.您可以指定最多20位的宽度.

  • FLOAT(M,D) : 一个不能无符号的浮点数.您可以定义显示长度(M)和小数位数(D).这不是必需的,默认为10,2,其中2是小数位数,10是总位数(包括小数位数).对于FLOAT,十进制精度可以达到24个位置.

  • DOUBLE(M,D) : 双精度浮点数,不能无符号.您可以定义显示长度(M)和小数位数(D).这不是必需的,默认为16,4,其中4是小数位数.对于DOUBLE,十进制精度可以达到53位. REAL是DOUBLE的同义词.

  • DECIMAL(M,D) : 解压缩的浮点数,不能无符号.在解压缩的小数中,每个小数对应一个字节.需要定义显示长度(M)和小数位数(D). NUMERIC是DECIMAL的同义词.

日期和时间类型

MySQL日期和时间数据类型如下 :

  • DATE :  YYYY-MM-DD格式的日期,介于1000-01-01和9999-12-31之间.例如,12月30日 th ,1973年将存储为1973-12-30.

  • DATETIME :  YYYY-MM-DD HH:MM:SS格式的日期和时间组合,介于1000-01-01 00:00:00和9999-12-31 23:59:59之间.例如,12月30日下午3:30 th ,1973年将存储为1973-12-30 15:30:00.

  • TIMESTAMP : 时间戳在午夜,1月1日 st ,1970年和2037年的某个时间之间.这看起来像以前的DATETIME格式,只有数字之间没有连字符; 12月30日下午3:30 th ,1973年将存储为19731230153000(YYYYMMDDHHMMSS).

  • TIME : 以HH:MM:SS格式存储时间.

  • YEAR(M) : 以2位数或4位数格式存储一年.如果长度指定为2(例如YEAR(2)),则YEAR可以在1970到2069(70到69)之间.如果长度指定为4,则YEAR可以是1901到2155.默认长度是4.

字符串类型

虽然数字和日期类型很有趣,但您存储的大多数数据都是字符串格式.此列表描述了MySQL中常见的字符串数据类型.

  • CHAR(M) : 长度在1到255个字符之间的固定长度字符串(例如CHAR(5)),在存储时用空格填充指定长度.不需要定义长度,但默认值为1.

  • VARCHAR(M) : 长度为1到255个字符的可变长度字符串.例如,VARCHAR(25).您必须在创建VARCHAR字段时定义长度.

  • BLOB或TEXT : 最大长度为65535个字符的字段. BLOB是"二进制大对象",用于存储大量二进制数据,例如图像或其他类型的文件.定义为TEXT的字段也包含大量数据.两者之间的区别在于对存储数据的排序和比较在BLOB上是区分大小写,并且在TEXT字段中不区分大小写.您没有使用BLOB或TEXT指定长度.

  • TINYBLOB或TINYTEXT :  BLOB或TEXT列,最大长度为255个字符.您没有使用TINYBLOB或TINYTEXT指定长度.

  • MEDIUMBLOB或MEDIUMTEXT :  BLOB或TEXT列,最大长度为16777215个字符.您没有使用MEDIUMBLOB或MEDIUMTEXT指定长度.

  • LONGBLOB或LONGTEXT :  BLOB或TEXT列,最大长度为4294967295个字符.您没有使用LONGBLOB或LONGTEXT指定长度.

  • ENUM : 枚举,这是列表的奇特术语.在定义ENUM时,您将创建必须从中选择值的项目列表(或者可以为NULL).例如,如果您希望您的字段包含"A"或"B"或"C",您可以将ENUM定义为ENUM('A','B','C')并且只定义那些值(或NULL)可能会填充该字段.

在下一章中,我们将讨论如何在MySQL中创建表.