【mysql】数据类型

前言:
   之前我设计数据库的时候设了一个时间戳类似的create_time字段,昨天王总知道这个字段之后告诉我说这个时间戳最大到2038年,有资料为证(特别耐心向我展示了网上查的资料),我没有看直接改了,态度特别好,下午回想这件事情上感觉基础还是挺重要的,所以先从mysql做起吧【纯天然源自平常的收集】

mysql数据类型:
菜鸟教程走一波



这里写图片描述
这个图是盗过来的,感觉画得不错就直接上传了一下,欢迎去原作 访问


整数:

  • bit:1字节
    无符号:[0~255]、有符号[-128~127]
    bool:1字节
    同上
    1、tinyint:1个字节
    无符号[0~255] 有符号[-128~127]
    2、smallint:2个字节
    无符号[0~65535]、有符号[-32768~32767]
    3、mediumint:3个字节
    无符号[0,2^24-1]:0~16777215,,有符号[-2^23,2^23-1]]
    4、int:4个字节
    无符号[0,2^32-1]:0~4294967295 ,有符号[-2^31,2^31-1]
    5、bigint:8个字节
    无符号[0,2^64-1]:0~1844674473709551615,有符号[-2^63 ,2^63 -1]

浮点数:

名词解释来一波:

1.1浮点数相当于一个定点数加上一个阶码,阶码表示将这个定点数的小数点移动若干位,由于可以用阶码移动小数点,因此称为浮点数。


1.1浮点数属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法;浮点数就是小数点在逻辑上是不固定的,而定点数只能表示小数点固定的数值


1.2定点的意思是,小数点固定在 32 位中的某个位置,前面的是整数,后面的是小数;小数点具体固定在哪里,可以自己在程序中指定

float(M,D):4字节、单精度浮点数

    M是精度,数据总长度,<=24则默认为float;D是标度,小数点后的长度,>24自动转换为double
double(M,D):8字节、双精度浮点数

decimal(M,D):M+2字节、压缩的“严格”定点数
    整数超出范围 报错拒绝处理;M范围1~65,0时取默认值10,D范围0~30且<=M,默认值0

注意:当不指定精度时,默认保存实际精度,decimal默认是整数;标度不够将四舍五入,decimal有报警信息

时间类型:
  year: 年份值,1个字节
    按照字符串格式存储,查到一篇博客原来还有YEAR(4)和YEAR(2)的区别,前者范围1901~2155,后者范围1970~2070,在year(2)中00~69代表2000~2069,插入时可以代替具体年份进行插入
>
  time:时间值或持续时间,3个字节,格式:‘HH:MM:SS’
    范围:-838:59:59~838:59:59,不仅可以保存一天中的时间还可以保存间隔,可以显示微妙但是插入时会被截断,超出范围的值、不合法的值被转为00:00:00


  date:日期值,3个字节,格式‘YYYY-MM-DD’、“YYYYMMDD”
    范围:1000-01-01~9999-12-31,MySQL允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。


  datetime:8字节、格式:‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’,按输入格式存储,输入什么存储什么,与时区无关
    范围:‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’,Mysql5.5之前日期类型不能精确到微妙,任何微妙值会被截断.
  不过MySQL数据库提供了函数MICROSECOND来提取日期中的微秒值:select microsecond(‘2000-01-01 00:00:00.123456’)


  timestamp:混合日期时间值、时间戳,格式同上、4字节
    范围:1970~2037、UTC世界标准时间存储,默认对当前时区进行转换,检索时再转换回当前时区(随设置的时区改变)


  当timestamp与datetime无输入情况下:

  1. 系统会输入系统当前日期与时间,timestamp使用current_timestamp(),而datetime使用now来获取当前时间
  2. 输入null时,系统会输入当前日期与时间

字符串:存储字符串、声音和图片的二进制数据
text:
  tinytext:范围0~255字节
    存储空间:值的长度+2字节
  text:范围0~55535
    存储空间:值的长度+2字节
  mediumtext:范围0~16777215
    存储空间:值的长度+3字节
  longtext:范围:0~4294967295
    存储空间:值的长度+4字节
char:长度:设计时设置的固定长度,最长255
varchar:长度:实际存储值+1,最长65535
set:0个或多个值
  创建表时指定取值范围
    属性名 set(‘值1’,‘值2’……,‘值n’)
  插入的值重复只取一个,自动按顺序插入排列,插入不正常值则忽略,可以看出是多选的enum


enum:
  定义时指定取值范围
    属性名 ENUM(‘值1’,‘值2’,‘值3’……,‘值n’)
    定义时有not null属性,其默认值为列表的第一个元素
    定义时无not null、则将容许插入null、且null为默认值

二进制类型

bit(M):保存位字段值,M位数<=64
    BIN(b+0) from table_name(b为列名,b+0将二进制结果转换为对应的数字的值,BIN()函数将数字转换为二进制):bit(4)长度4,存储的值0-15,变二进制后15变1111;查询时用BIN(字段名+0)将值转换为二进制显示

    binary(M)长度固定
        容许长度 0~M的定长二进制字符串,长度不够补0
    (M)长度可变
        长度为0~M变长二进制字符串,字节数为值的长度+1
blog:二进制大对象,存储可变数量的数据(有[博客]将其归为字符串类型)

https://blog.csdn.net/xu758142858/article/details/46820199
  1. tinyblog:最多255字节
    2 bolg:最多65535字节
    3 mediumblog:最多16777215字节
    4 longblog:最多4294967295字节(4GB)

其他:
geometry、point、multipoint、linestring、multilinestring、polygon、geometrycollection

数据类型选择

    1、整形:根据要显示的最大值决定
    2、浮点数:要求精确到小数点后10double,精度较高选择定点数decimal
    3、字符串:定长与变长的区别,char处理速度比varchar快,定长选char,变长varchar
    4、时间:需要显示的时间与时区对应,选择timestamp
    5enumset:长度不同,enum>=65535,set>=64成员,enum单选,set多选
    6text和blob:text字符数据,blob二进制数据,纯文本适合text,图片二进制


函数:
concat(str1,str2)函数:
  返回结果为 参数连接 产生的字符串,如果任何一个参数为null则返回值为null

  concat_ws(separator,str1,str2)函数:
    第一个参数是其他参数的分隔符,函数忽略分隔符参数后的null值
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

repeat(‘str1’,int)
    str1要复制的字符串,int复制的份数


mysql5.6.4始增加对秒的小数部分的支持,type_name(fsp)

使用建议:

  • 1、路径中使用“\”时,会被过滤:用“/”或“\”来代替“\”
    2、mysql中没有Bool、Boolean,但是可以定义,最后会转换成TinyInt(1)
    3、指定数据类型的时候采用从小原则,提高运行效率
    4、尽量不要有大杂烩的表,单一职责便于维护,数据库的设计结果是效率和可扩展性的折中,不偏不倚最好了

感谢分享:
https://blog.csdn.net/ja_java/article/details/69255904
https://www.cnblogs.com/doctorJoe/p/5337510.html
https://www.cnblogs.com/yingmo/p/6148360.html
https://blog.csdn.net/libo222/article/details/51508379
https://www.cnblogs.com/Caveolae/p/7058890.html
https://blog.csdn.net/xu758142858/article/details/46820199

愿世界与你 温柔以待这里写图片描述

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/80414768