mysql数据类型精讲

mysql数据类型精讲

关于属性character set name

character set name
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建表,指定表中的字段时,可以指定字段的字符集
在这里插入图片描述
在这里插入图片描述

SHOW VARIABLES LIKE 'character_%';

在这里插入图片描述

整数类型

整数类型一共有五种:
在这里插入图片描述
在这里插入图片描述
括号内表示的是显示数据的宽度,比如tinyint,-128的宽度是4
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单写(5)没有意义。要配合ZEROFILL使用
在这里插入图片描述
ZEROFILL显示宽度为5,当insert的值不足5位时,使用0填充
当使用ZEROFILL时,自动添加UNSIGNED
在这里插入图片描述
在这里插入图片描述
mysql8以后不会再显示宽度了
适用场景:
在这里插入图片描述

浮点数,定点数与位类型

浮点数

FLOAT表示单精度浮点数
DOUBLE表示双精度浮点数
在这里插入图片描述
REAL默认是DOUBLE,如果把SQL模式设定为“REAL_AS_FLOAT”,那么MYSQL就认为REAL是FLOAT,如果要启用”REAL_AS_FLOAT“,通过以下SQL语句实现:
SET sql_mode = "REAL_AS_FLOAT"
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
没办法四舍五入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试FLOAR与DOUBLE的精度问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
十进制数字转化为二进制数字的操作:
具体详细见博客https://blog.csdn.net/qq_36915078/article/details/106019023
在这里插入图片描述
为什么会造成这种精度误差呢?
在这里插入图片描述

定点数

如果用到浮点数要特别注意误差问题,因为浮点数不准确,所以我们要避免使用=来判断两个数是否相等。
在一些对精确度要求较高的项目中,千万不要使用浮点数,不然会导致结果错误,甚至是不可挽回的损失。MYSQL有精准数据类型,就是定点数类型:DECIMAL。
在这里插入图片描述
DECIMAL(M,D)的最取值范围与DOUBLE类型一样
定点数在MySQL内部是以字符串形式进行存储的,这就决定了它一定是精准的。
DECIMAL默认是DECIMAL(10,0)。当数据的精度超出了定点数类型的精度范围时,则MYSQL同样会进行四舍五入处理。
在这里插入图片描述
MYSQL8.0依旧显示()
在这里插入图片描述
添加数据超过精度范围依旧四舍五入,和float,double类似。
在这里插入图片描述

位类型

BIT类型中存储的是二进制值,类似010110。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
16进制展示
在这里插入图片描述
因为2占两位,f1默认只有1位
在这里插入图片描述
在这里插入图片描述
函数BIN() 用二进制展示数据,HEX() 用16进制展示数据
在这里插入图片描述
在这里插入图片描述
显示十进制
在这里插入图片描述
在这里插入图片描述

日期与时间类型

在这里插入图片描述
YEAR类型
在这里插入图片描述
在这里插入图片描述
DATE类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TIME类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DATETIME类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TIMESTAMP类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对比DATETIME和TIMESTAMP
在这里插入图片描述
在这里插入图片描述
修改当前时区

SET time_zone = '+9:00';

然后再查询
在这里插入图片描述
开发经验:
在这里插入图片描述

文本字符串类型

在这里插入图片描述
CHAR与VARCHAR类型
在这里插入图片描述
声明的是字符长度,实际存储长度是根据字符集定的
在这里插入图片描述
这里5代表5个字符的意思
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
存储很短的信息,比如门牌号101,102等,这样很短的信息用char,因为varchar还要占个byte用于存储信息长度,本来打算节约存储,结果得不偿失。
固定长度的,比如使用uuid作为主键,那用char应该更合适,因为固定长度,varchar动态根据长度的特性就消失了,而且还要占一个长度信息。
十分频繁更改的字段,由于varchar每次存储都要有额外的计算得到长度等工作,如果一个非常频繁的改变,那就需要有很多精力用于计算,而这些对于char来说是不需要的,
具体存储引擎情况:
在这里插入图片描述
TEXT类型
在这里插入图片描述
注意:在保存和查询数据时,并没有删除TEXT类型的数据尾部的空格。
在这里插入图片描述
ENUM类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SET类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二进制类型与JSON类型

二进制字符串类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JSON类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提取json中的值
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙崎流河

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

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

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

打赏作者

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

抵扣说明:

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

余额充值