整数类型和字符串类型的长度范围

类型 字节 默认宽度 范围 范围
tinyint 1 4
有符号 [-128, 127]
无符号 [0, 255]
有符号 [-2^7, 2^7 - 1]
无符号 [0, 2^8 - 1]
smallint 2 6
有符号 [-32768, 32767]
无符号 [0, 65535]
有符号 [-2^15, 2^15 - 1]
无符号 [0, 2^16 - 1]
mediumint 3 9
有符号 [-8388608, 8388607]
无符号 [0, 16777215]
有符号 [-2^23, 2^23 - 1]
无符号 [0, 2^24 - 1]
int 4 11
有符号 [-2147483648, 2147483647]
无符号 [0, 4294967295]
有符号 [-2^31, 2^31 - 1]
无符号 [0, 2^32 - 1]
bigint 8 20
有符号 [-9223372036854775808, 9223372036854775807]
无符号 [0, 18446744073709551615]
有符号 [-2^63, 2^63]
无符号 [0, 2^64 - 1]



类型 长度 最大字符数 最大字节数
char(n) 固定 utf8mb4:char(255)
utf8:char(255)
-
varchar(n) 可变 utf8mb4:varchar(16383)
utf8:varchar(21844)
-
tinytext 可变 - 255
text 可变 - 65535≈64KB
mediumtext 可变 - 16777215≈16MB
longtext 可变 - 4294967295≈4GB

不同字符集下1个字符可能所占最大字节数
--------------------------------------------------
utf8:1个字符最多可占3个字节(如汉字)
utf8mb4:1个字符最多可占4个字节(如emoji表情符号)



查询字符串在指定字符集下的字节长度
--------------------------------------------------
SELECT LENGTH( CONVERT( 'A' USING `utf8mb4`)) AS `strlen`; -- strlen为1
SELECT LENGTH( CONVERT( '码' USING `utf8mb4`)) AS `strlen`; -- strlen为3
SELECT LENGTH( CONVERT( '🐵' USING `utf8mb4`)) AS `strlen`; -- strlen为4

Copyright © 2024 码农人生. All Rights Reserved