MySQL 8.0支持哪些数据类型?

发布时间 2023-11-23 13:54:02作者: 高&玉

数值数据类型

整数类型:

  • TINYINT: 微型整数类型;占用1 bytes空间;有符号支持的范围:-128 ~ 127; 无符号支持的范围:0 ~ 255
  • SMALLINT: 小型整数类型;占用2 bytes空间;有符号支持的范围:-32768 ~ 32767;无符号支持的范围:0 ~ 65535
  • MEDIUMINT:中型整数类型;占用3 bytes空间;有符号支持的范围:-8388608 ~ 8388607;无符号支持的范围:0 ~ 16777215
  • INT,INTEGER:常规整数类型;占用4 bytes空间;有符号支持的范围:-2147483648 ~ 2147483647;无符号支持的范围:0 ~ 4294967295
  • BIGINT:大型整数类型;占用8 bytes空间;有符号支持的范围:-2^63^ ~ 2^63^-1;无符号支持的范围:0 ~ 2^64^-1

小数类型:

  • FLOAT:浮点数数据类型;FLOAT(n):如果0 <= n <= 24占用4 bytes,如果25 <= b <= 53占用8 bytes;FLOAT:不指定位数个数则可占用4 bytes;FLOAT(M,N):M表示总位数,N表示小数位数。
  • DOUBLE [PRECISION],REAL:双精度小数类型;占用8 bytes;DOUBLE(M,N):M表示总位数,N表示小数位数;REAL已经被弃用。
  • DECIMAL(M,D), NUMERIC(M,D):小数数据类型;占用0 ~ 8 bytes;DECIMAL(M,N):M表示总位数,N表示小数位数。

BIT类型:

  • BIT(M):存储BIT值的数据类型,M的取值范围是1 ~ 64;占用(M+7)/8 bytes

date和time数据类型

  • DATE:存储日期,格式为:yyyy-mm-dd;MySQL 5.6.4版本之前占用3 bytes,MySQl 5.6.4版本之后占用3 bytes
  • TIME:存储时间,格式为:HH:MM:SS;MySQL 5.6.4版本之前占用3 bytes,MySQL 5.6.4版本之后占用3 ~ 6 bytes
  • YEAR:存储年份,格式为:yyyy;占用1 bytes
  • DATETIME:存储日期与时间,格式为yyyy-mm-dd HH:MM:SS,MySQL 5.6.4版本之前占用8 bytes,MySQL 5.6.4版本之后占用5 ~ 8 bytes
  • TIMESTAMP:存储日期与时间,格式为yyyy-mm-dd HH:MM:SS,存储的时间范围是1970年1月1日到2023年1月19日;MySQL 5.6.4版本之前占用4 bytes,MySQL 5.6.4版本之后占用4 ~ 7 bytes

字符数据类型

  • CHAR:定长字符类型;允许存储0 ~ 255个字符;字符集不同每个字符占用的空间不同(假设1个字符占用 W bytes),所以CHAR(M)占用M * W bytes空间。
  • VARCHAR:可变长度字符类型;允许存储0 ~ 65535个字符;如果存储 0 到 255 个字符,占用L + 1 bytes空间。如果列值占用> 255 bytes,则占用L + 2 bytes空间。
  • BINARY:定长二进制字符类型;允许存储0 ~ 255个字符,占用0 <= M <= 255 bytes空间。
  • VARBINARY:可变长度字符类型;允许存储0 ~ 65535个字符;如果存储 0 到 255 个字符,占用L + 1 bytes空间。如果列值占用> 255 bytes,则占用L + 2 bytes空间。
  • TINYBLOB,TINYTEXT:微型大对象数据类型;列字符串实际占用空间L < 2^8^ bytes,则占用L + 1 bytes空间。
  • MEDIUMBLOB,MEDIUMTEXT:中型大对象类型;列字符串实际占用空间L < 2^24^ bytes,则占用L + 3 bytes空间。
  • BLOB,TEXT:常规大对象数据类型;列字符串实际占用空间L < 2^16^ bytes,则占用L + 2 bytes空间。
  • LONGBLOB,LONGTEXT:大型大对象数据类型;列字符串实际长度L < 2^32^ bytes,则占用L + 4 bytes空间。
  • ENUM:枚举字符类型;ENUM('value1','value2',...),1 bytes, 2 bytes取决于枚举值的数量(最大支持65535个值)。
  • SET: 集合字符类型;SET('value1','value2',...),1 bytes,2 bytes,3 bytes,4 bytes,8 bytes,取决于集合成员的数量(最多支持64个成员)。

备注:

  • nonbinary类型:M表示字符个数;
  • binary类型:M表示字符串占用的bytes值。
  • L表示字符串占用的bytes值。

地理空间数据类型

地理空间数据类型请参考:MySQL 8.0: Spatial Data Types

JSON数据类型

JSON数据类型请参考:MySQL 8.0: The JSON Data Type


参考: