MySQL数据类型

数据类型

  • 整数类型

    • 主要数据类型
    类型名称说明存储需求
    TINYINT很小的整数1字节
    SMALLINT小整数2字节
    MEDIUMINT中等大小的整数3字节
    INT(INTEGER)普通大小的整数4字节
    BIGINT大整数8字节
    • 无符号和有符号的区别,假设 1 字节,无符号则范围为: 0 ~ 2^8,有符号范围为: -2^7 ~ 2^8
    • INT(4): 显示宽度, 显示宽度和数据类型的取值范围是无关的。显示宽度只是指明MySQL最大可能显示的数字个数,小于指定的宽度会由空格填充,大于宽度只要不大于数据整数的取值范围,数据依然可以插入,而且能够显示。存储范围不会变化,只用于显示

浮点数和定点数类型

  • 小数类型和存储需求
类型名称说明存储需求
FLOAT单精度浮点数4 个字节
DOUBLE双精度浮点数8 个字节
DECIMAL(M, D), DEC压缩的 “ 严格 ” 定点数M + 2 个字节
  • float有符号,1 个符号位,8 个指数位, 23 个尾数位 ( 2^23 大小,精度为 6~7 位)
  • double有符号, 1个符号位,11个指数位, 52 个尾数 (2^52 大小,精度为 15~16 位)
  • 浮点和定点类型,指定的精度超出精度范围,则会四舍五入。
  • FLOATDOUBLE 不指定精度时,默认实际的精度(Hardware 和 System 决定),DECIMAL默认为(10, 0)
  • FLOAT(5, 1)DOUBLE(10, 1)DECIMAL(5, 1)

日期与时间

  • 日期和时间类型
类型名称日期格式日期范围存储需求
YEARYYYY1901 ~ 21551 字节
TIMEHH:MM:SS-839:59:59 ~ 838:59:593 字节
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-33 字节
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-038 字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:00:01 UTC ~ 2038-01-19 03:14:07 UTC4 字节
  • YEAR: 格式为 YYYY, 或 'YYYY' 四位数表示则正常, 两位数 01~69 表示 2001~206970~99 表示 1970~1999, 数字 0 表示 0, 字符串 02000
  • TIME: 格式为 HH:MM:SSHH 可以表示时间间隔正负大于24
  • TIME 不规则的格式 D HH:MM:SS, D HHMMSS 等, D 表示天数
  • TIME 中间无间隔,数据从 SS 取,中间有 “:” 间隔,数据从 HH 改。当时分无意义时,插入00:00:00
  • INSERT INTO tb_name (CURRENT_TIME), (NOW()): 插入当前时间
  • DATE 格式为 YYYY-MM-DDYYYYMMDD,插入时 YY-MM-DDYY见图表
  • CURRENT_DATE, NOW(): 当前日期
  • DATETIME: 格式为 YYYY-MM-DD HH:MM:SSYYYYMMDDHHMMSS表示时间
  • 当前时间 NOW()
  • TIMESTAMP: 格式同上,不同的时间区间
  • 存储为(UTC)时间,存储和检索会根据当前时区进行转换
  • set time_zone='+10:00' 设置时区变化,SELECT 的结果也会变化

文本字符串类型

非二进制字符串类型

  • 类型和说明
类型名称说明存储需求
CHAE(M)固定长度非二进制字符串M 字节, 1 <= M <= 255
VARCHAR(M)变长非二进制字符串L+1 字节,在此 L <= M 和 1 <= M <= 255
TINYTEXT很小的非二进制字符串L+1 字节, L< 2^8
TEXT小的非二进制字符串L+2 个字节,L < 2^16
MEDIUMTEXT中等大小的非二进制字符串L+3 个字节, L < 2^24
LONGTEXT大的非二进制字符串L+4 个字节,L < 2^32
ENUM枚举类型,只能有一个枚举字符串值1 或 2 个字节,取决于枚举值的数目
SET一个集合,字符串对象可以有零或多个 SET 成员1, 2, 3, 4 或 8 个字节
  • CHAR(M): 存储时会补空格,取出时去掉右边的空格,即使存储的数据中右边有空格
  • VARCHAR(M): 保存空格,长度为实际长度加 1
  • TEXT类型,一般用于文章内容、评论等
  • ENUM: 定义格式 columeName ENUM('fist', 'second', 'third', ENUM值在内部用整数表示,每个枚举值均有一个索引值,从 1 开始编号。可以包含 NULL ,并总有一个默认值。如果有非空限制,则默认为第一个元素
  • SET: 定义格式 SET('first', 'second', 'third'),插入的时候可以插入子集

二进制字符串类型

  • 类型和说明
类型名称说明存储需求
BIT(M)位字段类型大约(M+7)/8个字节
BINAEY(M)固定长度二进制字符串M 个字节
VARBINARY(M)可变长度二进制字符串M + 1个字节
TINYBLOB(M)较小的BLOBL+1 个字节, L < 2^8
BLOB(M)小blobL+2字节,L < 2^16
MEDIUMBLOB(M)中等大小的BLOBL+3 字节,L < 2^24
LONGBLOB(M)中等大的BLOBL+4 个字节,L < 2^32
  • BIT(M): M 表示每个值的位数,范围为 1~64。如果M被省略,默认为 1
  • BINARYVARBINARY 记录二进制字符串。BINARY 右边补 \0
  • BLOB: 二进制大对象,用来存储可变数量的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值