【MySQL】数据类型

数值类型

整数

整数类型取值范围存储需求
TinyInt(size)有符号:-128 ~ 127;
无符号:0 ~ 255
1 字节
SmallInt(size)有符号:-32768 ~ 32767
无符号:0 ~ 65535
2 字节
MediumInt(size)有符号:-223~223-1
无符号:0~224-1
3 字节
INT(size)(size 默认为 11)有符号:-231~231-1
无符号:0~232-1
4 字节
BIGINT(size)有符号:-263~263-1
无符号:0~264-1
8 字节
  • 默认为有符号,无符号需要设置 unsigned 约束
  • 插入的数值 > 类型范 围 → 直接报错

浮点数

小数类型说明存储需求
float(size, d)±1.1754351e-384 字节
double(size, d)±2.2250738585072014e-3088 字节
decimal(size, d)size 默认为 10,d 默认为 0M + 2 个字节
  • size 为精度;d 为保留的小数位数
  • 小数部分:if 数据的小数位数 > d → 系统会自动四舍五入
  • 整数部分:if 数据的整数位数 > size - d → 报错
id float(5, 2); -- size=5, d=2, 就是说整数最多只能是3位数
  • 对于高精度的数值,一般使用 decimal 而不考虑 floatdouble,因为后者容易产生误差
  • decimal & numeric 同义,decimal 可以简写为 dec

字符串

字符串类型说明长度
char(size)(size 默认为1)定长字符串0 ~ 255
varchar(size)变长字符串0 ~ 65535
TinyText微型文本串0 ~ 255
text文本串0 ~ 65535

char & varchar

  • char(10):即使实际字节数 < 10,还是会占据 10 个字节的存储空间
  • varchar(10):实际字节数是多少就是多少,能自动计算你的字节数(由于有计算的操作,速度相对会慢一些)

枚举类型

enum('字段值1', '字段值2');
  • 对 1 ~ 255 个成员的枚举需要 1 个字节存储
  • 对于 255 ~ 65535 个成员,需要 2 个字节存储
  • 最多存储 65535 个成员

注意:在操作字段的时候,枚举类型的字段值可以直接写序号,1 → 字段1、2 → 字段2 …

drop table if exists students;
create table students (
	sex enum('f', 'm')
);
insert into students values('m');
insert into students values('F'); -- 不区分大小写
insert into students values(1); -- 1 → f    2 → m

日期类型

日期类型格式取值范围
dateYYYY-MM-DD,日期格式1000-01-01 ~ 9999-12-31
timehh:mm:ss:-835:59:59 ~ 838:59:59
DateTimeYY-MM-DD hh:mm:ss:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TimeStampYYYYMMDDHHMMSS1970年某时刻 ~ 2038年某时刻,精度为 1 秒
yearYYYY 格式的年份1901 ~ 2155
  1. TimeStamp 支持的时间范围较小(1970-01-01 08:00:01 ~ 2038年的某个时间)

  2. DateTime 的取值范围:1000-1-1 ~ 9999-12-31

  3. TimeStamp 和实际时区有关,更能反映实际的日期

  4. DateTime 只能反映出插入时的当地时区

  5. TimeStamp 的属性受 MySQL 版本和 SQLMode 的影响很大

drop tables if exists `time`;
CREATE TABLE `time` (
    `DateTime` datetime,
    `TimeStamp` timestamp
);

insert into `time` values(now(), now());

show variables like 'time_zone'; -- 查看当前时区 → SYSTEM → 2021-04-24 19:32:26

set time_zone = '+9:00'; -- 设置时区

select * from `time`;

-- DateTime 2021-04-24 19:32:26
-- TimeStamp 2021-04-24 20:32:26

可以看见 TimeStamp 根据时区的改变而改变了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JS.Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值