【MySQL笔记】数据库创建中的数据类型

目录

MySQL中的数据类型

常见的数据类型属性

字符集设置

整数类型

浮点数类型 

定点数类型

位类型

日期与时间类型​编辑

文本字符串类型

CHAR与VARCHAR类型 

TEXT类型

ENUM(枚举)类型

SET类型 

二进制字符串类型

BINARY与VARBINARY类型

BLOB类型

JSON类型


MySQL中的数据类型

常见的数据类型属性

字符集设置

# 指明表的字符集
CREATE TABLE test (
                    id INT
                    ) CHARACTER SET 'utf8';

#指定字段的字符集
CREATE TABLE test (
                    id INT
                    NAME VARCHER(10) CHARACTER SET 'utf8'
                    );

整数类型

从 MySQL 8.0.17 开始,整数数据类型不推荐使用显示宽度属性

CREATE TABLE test (
f1 INT,
f2 INT(5),
f3 INT(5) ZEROFILL #显示宽度为 5,当 insert 的值不足 5 位时,使用 0 填充
);

浮点数类型 

因为浮点数是不准确的,所以我们要避免使用 “=” 来判断两个数是否相等

INSERT INTO test(f1,f2)
VALUES(123.45,123.456); # 存在四舍五入

>>> 123.45,123.46

在一些对精确度要求较高的项目中,千万不要使用浮点数,不然会导致结构错误。那么, MySQL 有没有精确的数据类型呢?我们就引入了定点数类型

定点数类型

使用 DECIMAL(M,D) 的方式表示高精度小数。其中,M 被称为精度,D 被称为标度。

0 <= M <=65,0 <= D <= 30,D < M

例如,定义 DECIMAL(5,2) 的类型,表示该列的取值范围 -999.99 ~ 999.99

浮点数相对于定点数的优点是在长度一定的情况下,浮点类型取值范围大,但是不精确,适用于需要取值范围大,又可以容忍微小误差的科学计算场景

定点数类型取值范围小,但是精确,适合对精确度要求较高的场景

位类型

日期与时间类型

文本字符串类型

CHAR与VARCHAR类型 

TEXT类型

由于实际存储长度不确定,MySQL 不允许 TEXT 类型字段做主键

ENUM(枚举)类型

CREATE TABLE test (
season ENUM ('春','秋','unknow')
);

SET类型 

SET 类型在选取成员时,可以一次选择多个成员,这一点与 ENUM 类型不同

插入重复 SET 类型成员时,MySQL 会自动删除重复成员

向 SET 类型的字段插入 SET 类型成员中不存在的值时,将报错

二进制字符串类型

BINARY与VARBINARY类型

BLOB类型

BLOB 类型可以存储一个二进制大对象,比如图片,音频和视频等

JSON类型

CREATE TABLE test (
js json
);
INSERT INTO test(js)
VALUES('{"name":"Tom","age":20}');

SELECT js -> '$.name' AS NAME,js -> '$.age' AS age
FROM test;

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

java小白。。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值