mysql数据类型精讲

文章目录

  • mysql数据类型精讲
    • 关于属性character set name
    • 整数类型
    • 浮点数,定点数与位类型
      • 浮点数
      • 定点数
      • 位类型
    • 日期与时间类型
    • 文本字符串类型
    • 二进制类型与JSON类型
      • 二进制字符串类型
      • JSON类型
    • 小结

mysql数据类型精讲

关于属性character set name

character set name
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mysql数据类型精讲_第1张图片
在这里插入图片描述
在这里插入图片描述
创建表,指定表中的字段时,可以指定字段的字符集
mysql数据类型精讲_第2张图片
在这里插入图片描述

SHOW VARIABLES LIKE 'character_%';

mysql数据类型精讲_第3张图片

整数类型

整数类型一共有五种:
mysql数据类型精讲_第4张图片
mysql数据类型精讲_第5张图片
括号内表示的是显示数据的宽度,比如tinyint,-128的宽度是4
mysql数据类型精讲_第6张图片
mysql数据类型精讲_第7张图片
mysql数据类型精讲_第8张图片
mysql数据类型精讲_第9张图片
单写(5)没有意义。要配合ZEROFILL使用
mysql数据类型精讲_第10张图片
ZEROFILL显示宽度为5,当insert的值不足5位时,使用0填充
当使用ZEROFILL时,自动添加UNSIGNED
mysql数据类型精讲_第11张图片
mysql数据类型精讲_第12张图片
mysql8以后不会再显示宽度了
适用场景:
mysql数据类型精讲_第13张图片

浮点数,定点数与位类型

浮点数

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

定点数

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

位类型

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

日期与时间类型

mysql数据类型精讲_第30张图片
YEAR类型
mysql数据类型精讲_第31张图片
在这里插入图片描述
DATE类型
mysql数据类型精讲_第32张图片
mysql数据类型精讲_第33张图片
mysql数据类型精讲_第34张图片
mysql数据类型精讲_第35张图片
mysql数据类型精讲_第36张图片
TIME类型
mysql数据类型精讲_第37张图片
mysql数据类型精讲_第38张图片
mysql数据类型精讲_第39张图片
DATETIME类型
mysql数据类型精讲_第40张图片
mysql数据类型精讲_第41张图片
mysql数据类型精讲_第42张图片
TIMESTAMP类型
mysql数据类型精讲_第43张图片
mysql数据类型精讲_第44张图片
mysql数据类型精讲_第45张图片
mysql数据类型精讲_第46张图片
对比DATETIME和TIMESTAMP
mysql数据类型精讲_第47张图片
mysql数据类型精讲_第48张图片
修改当前时区

SET time_zone = '+9:00';

然后再查询
mysql数据类型精讲_第49张图片
开发经验:
mysql数据类型精讲_第50张图片

文本字符串类型

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

二进制类型与JSON类型

二进制字符串类型

mysql数据类型精讲_第70张图片
mysql数据类型精讲_第71张图片
mysql数据类型精讲_第72张图片

JSON类型

mysql数据类型精讲_第73张图片
mysql数据类型精讲_第74张图片
mysql数据类型精讲_第75张图片
提取json中的值
在这里插入图片描述
mysql数据类型精讲_第76张图片

小结

mysql数据类型精讲_第77张图片

你可能感兴趣的:(mysql,mysql,数据库,java)