0
点赞
收藏
分享

微信扫一扫

mysql数据类型精讲


文章目录

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

mysql数据类型精讲

关于属性character set name

​character set name​

mysql数据类型精讲_数据库


mysql数据类型精讲_java_02


mysql数据类型精讲_java_03


mysql数据类型精讲_数据库_04


mysql数据类型精讲_数据库_05


mysql数据类型精讲_mysql_06


创建表,指定表中的字段时,可以指定字段的字符集

mysql数据类型精讲_mysql_07


mysql数据类型精讲_浮点数_08

SHOW VARIABLES LIKE 'character_%';

mysql数据类型精讲_定点数_09

整数类型

整数类型一共有五种:

mysql数据类型精讲_数据库_10


mysql数据类型精讲_java_11


括号内表示的是显示数据的宽度,比如tinyint,-128的宽度是4

mysql数据类型精讲_java_12


mysql数据类型精讲_数据库_13


mysql数据类型精讲_mysql_14


mysql数据类型精讲_数据库_15


单写(5)没有意义。要配合ZEROFILL使用

mysql数据类型精讲_mysql_16


ZEROFILL显示宽度为5,当insert的值不足5位时,使用0填充

当使用ZEROFILL时,自动添加UNSIGNED

mysql数据类型精讲_数据库_17


mysql数据类型精讲_浮点数_18


mysql8以后不会再显示宽度了

适用场景:

mysql数据类型精讲_mysql_19

浮点数,定点数与位类型

浮点数

FLOAT表示单精度浮点数

DOUBLE表示双精度浮点数

mysql数据类型精讲_java_20


REAL默认是DOUBLE,如果把SQL模式设定为“REAL_AS_FLOAT”,那么MYSQL就认为REAL是FLOAT,如果要启用”REAL_AS_FLOAT“,通过以下SQL语句实现:

​SET sql_mode = "REAL_AS_FLOAT"​

mysql数据类型精讲_mysql_21


mysql数据类型精讲_mysql_22


mysql数据类型精讲_浮点数_23


mysql数据类型精讲_定点数_24


mysql数据类型精讲_浮点数_25


mysql数据类型精讲_java_26


mysql数据类型精讲_数据库_27


没办法四舍五入

mysql数据类型精讲_数据库_28


mysql数据类型精讲_mysql_29


mysql数据类型精讲_mysql_30


测试FLOAR与DOUBLE的精度问题

mysql数据类型精讲_浮点数_31


mysql数据类型精讲_定点数_32


mysql数据类型精讲_浮点数_33


十进制数字转化为二进制数字的操作:

具体详细见博客https://blog.csdn.net/qq_36915078/article/details/106019023

mysql数据类型精讲_定点数_34


为什么会造成这种精度误差呢?

mysql数据类型精讲_数据库_35

定点数

如果用到浮点数要特别注意误差问题,因为浮点数不准确,所以我们要避免使用=来判断两个数是否相等。

在一些对精确度要求较高的项目中,千万不要使用浮点数,不然会导致结果错误,甚至是不可挽回的损失。MYSQL有精准数据类型,就是定点数类型:DECIMAL。

mysql数据类型精讲_mysql_36


DECIMAL(M,D)的最取值范围与DOUBLE类型一样

定点数在MySQL内部是以字符串形式进行存储的,这就决定了它一定是精准的。

DECIMAL默认是DECIMAL(10,0)。当数据的精度超出了定点数类型的精度范围时,则MYSQL同样会进行四舍五入处理。

mysql数据类型精讲_定点数_37


MYSQL8.0依旧显示()

mysql数据类型精讲_定点数_38


添加数据超过精度范围依旧四舍五入,和float,double类似。

mysql数据类型精讲_mysql_39

位类型

BIT类型中存储的是二进制值,类似010110。

mysql数据类型精讲_定点数_40


mysql数据类型精讲_mysql_41


mysql数据类型精讲_mysql_42


mysql数据类型精讲_数据库_43


mysql数据类型精讲_mysql_44


16进制展示

mysql数据类型精讲_mysql_45


因为2占两位,f1默认只有1位

mysql数据类型精讲_数据库_46


mysql数据类型精讲_定点数_47


函数BIN() 用二进制展示数据,HEX() 用16进制展示数据

mysql数据类型精讲_数据库_48


mysql数据类型精讲_定点数_49


显示十进制

mysql数据类型精讲_定点数_50


mysql数据类型精讲_mysql_51

日期与时间类型

mysql数据类型精讲_java_52


YEAR类型

mysql数据类型精讲_数据库_53


mysql数据类型精讲_定点数_54


DATE类型

mysql数据类型精讲_数据库_55


mysql数据类型精讲_浮点数_56


mysql数据类型精讲_mysql_57


mysql数据类型精讲_mysql_58


mysql数据类型精讲_mysql_59


TIME类型

mysql数据类型精讲_mysql_60


mysql数据类型精讲_浮点数_61


mysql数据类型精讲_定点数_62


DATETIME类型

mysql数据类型精讲_定点数_63


mysql数据类型精讲_java_64


mysql数据类型精讲_定点数_65


TIMESTAMP类型

mysql数据类型精讲_浮点数_66


mysql数据类型精讲_mysql_67


mysql数据类型精讲_数据库_68


mysql数据类型精讲_mysql_69


对比DATETIME和TIMESTAMP

mysql数据类型精讲_浮点数_70


mysql数据类型精讲_java_71


修改当前时区

SET time_zone = '+9:00';

然后再查询

mysql数据类型精讲_java_72


开发经验:

mysql数据类型精讲_数据库_73

文本字符串类型

mysql数据类型精讲_java_74


CHAR与VARCHAR类型

mysql数据类型精讲_mysql_75


声明的是字符长度,实际存储长度是根据字符集定的

mysql数据类型精讲_浮点数_76


这里5代表5个字符的意思

mysql数据类型精讲_定点数_77


mysql数据类型精讲_浮点数_78


mysql数据类型精讲_数据库_79


mysql数据类型精讲_浮点数_80


存储很短的信息,比如门牌号101,102等,这样很短的信息用char,因为varchar还要占个byte用于存储信息长度,本来打算节约存储,结果得不偿失。

固定长度的,比如使用uuid作为主键,那用char应该更合适,因为固定长度,varchar动态根据长度的特性就消失了,而且还要占一个长度信息。

十分频繁更改的字段,由于varchar每次存储都要有额外的计算得到长度等工作,如果一个非常频繁的改变,那就需要有很多精力用于计算,而这些对于char来说是不需要的,

具体存储引擎情况:

mysql数据类型精讲_数据库_81


TEXT类型

mysql数据类型精讲_数据库_82


注意:在保存和查询数据时,并没有删除TEXT类型的数据尾部的空格。

mysql数据类型精讲_mysql_83


ENUM类型

mysql数据类型精讲_数据库_84


mysql数据类型精讲_mysql_85


mysql数据类型精讲_浮点数_86


mysql数据类型精讲_java_87


mysql数据类型精讲_定点数_88


SET类型

mysql数据类型精讲_mysql_89


mysql数据类型精讲_java_90


mysql数据类型精讲_数据库_91


mysql数据类型精讲_定点数_92


mysql数据类型精讲_数据库_93

二进制类型与JSON类型

二进制字符串类型

mysql数据类型精讲_浮点数_94


mysql数据类型精讲_浮点数_95


mysql数据类型精讲_浮点数_96

JSON类型

mysql数据类型精讲_浮点数_97


mysql数据类型精讲_数据库_98


mysql数据类型精讲_数据库_99


提取json中的值

mysql数据类型精讲_定点数_100


mysql数据类型精讲_数据库_101

小结

mysql数据类型精讲_定点数_102


举报

相关推荐

0 条评论