【MySQL--->数据类型】

### 文章目录

  • [@[TOC](文章目录)](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [一、数据类型分类](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [二、整型类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [三、bit(位)类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [四、float类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [五、decimal类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [六、char和varchar类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [1.char类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [2.varchar](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [3.char与varchar的区别](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [七、日期与时间类型](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)
  • [八、enum和set](#文章目录 @TOC 一、数据类型分类 二、整型类型 三、bit(位)类型 四、float类型 五、decimal类型 六、char和varchar类型 1.char类型 2.varchar 3.char与varchar的区别 七、日期与时间类型 八、enum和set)

一、数据类型分类


二、整型类型

数值类型有数据存储上限,而且每个类型都有无符号和有符号两种,默认有符号,在类型后面加上unsigned就是无符号,以tinyint为例,总共占一个字节,无符号最大存储上限是127,下限-128,有符号最大上限是255,下限是0.

mysql数值类型不会发生数据截断的情况,如果发生越界的情况只会报错,不会数据截断存储.这样能保证数据库中数据的合法性.不同数值类型所占的字节大小不同,视情况选择适当的类型,不能太大也不能太小.

三、bit(位)类型

bit类型就是按比特位存储数据的,类型后面跟(n)可以设置比特位的个数,比特位最大上限是64位,如果类型设置为bit(1),数值只能插入0或者1.,数值的显示是以ascll码值的方式显示的,也是按照ascll码值的方式 存储的.比如存储0或者1是显示不出来的,但是如果是字符的话就可以显示,比如'a'或者97都是显示'a'.

四、float类型

类型指定格式float(m,d)m代表数据总长度,d代表精度.占4个字节,float unsigned为无符号类型.

float类型后面的小数值如果超出精度会被四舍五入,但是前提是四舍五入以后数据总长度必须不能超过m.

例如float(4.2),无符号上限99.99,下限-99.99,有符号上限99.99.下限是0;

如果整数部分存储的值超过99,会有精度损失

五、decimal类型

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

decimal类型与float的精度不同float表示的精度大约是7位。decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。

六、char和varchar类型

1.char类型

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255

2.varchar

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节,

除了有效数据,还需要腾出最大3个最小1个字节用作字符串长度记录.utf8编码格式汉字占3个字节,gbk编码格式汉字占2个字符,也就是说utf8编码格式下varchar最多可以存储(65535-(1-3))/3个汉字,gbk编码最多可以存储(65535-(1-3))/2个汉字

如果一行只有一个varchar类型,那么上限确实是utf8编码格式下varchar最多可以存储(65535-(1-3))/3个汉字,gbk编码最多可以存储(65535-(1-3))/2个汉字,也就是说这不但是类型的上限也是一个表的一行的上限.

3.char与varchar的区别

char是固定长度的,如果char(4),那么不管存储的数据有没有4字节,都需要4字节的空间,varchar(4)如果存储的实际数据是1字节,那么还需要1字节存储字符串长度,所以实际占空间2字节.

应用场景,如果所需的数据是多变的,那么应该使用varchar类型,如果担心长度不够用,可以将L定义的长一些.如果是固定长度的,那么应该使用char,应为char不需要多余字节维护长度.

七、日期与时间类型

date :日期 'yyyy-mm-dd' ,占用3字节

datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用8字节

timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用4字节

如果更新数据,更新数据,timestamp类型时间戳会自动更新;

八、enum和set

语法:

enum:枚举,"单选"类型;

enum('选项1','选项2','选项3',...);

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是"数字",因为这些选项的每个选项值依次对应如下数字:1,2,3,...最多65535个;当我们添加枚举值时,也可以添加对应的数字编号。

set:集合,"多选"类型;

set('选项值1','选项值2','选项值3', ...);

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是"数字",因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,...最多64个

set和enum也可以用位图的方式传递参数,那个比特位上有1,就代表传递那个参数

查找方式select * from 表名 where 列名=值;但是这样只能查找刚好符合条件的选项,不能查找包含此条件,但是也满足其他条件的选项.

使用find_in_set(值,列名)函数可以查刚好符合条件的选项和包含此条件,但是也满足其他条件的选项.


相关推荐
2301_800976934 分钟前
数据库的基本操作后续
java·数据库·sql
SECS/GEM5 分钟前
SECS/GEM如何实现越南现场自定义消息
java·服务器·数据库
weixin_4249993622 分钟前
PHP源码在双硬盘系统如何优化_硬件存储分配建议【指南】
jvm·数据库·python
ECT-OS-JiuHuaShan27 分钟前
渡劫代谢,好事多磨
数据库·人工智能·科技·学习·算法·生活
qq_1898070331 分钟前
json ignore反序列化?_?JSON反序列化时忽略字段的json----标签使用方法.txt
jvm·数据库·python
zhangchaoxies31 分钟前
让水平滚动条始终固定在页面底部,实现跨视口的横向滚动控制
jvm·数据库·python
justjinji39 分钟前
如何用组合继承模式实现父类方法复用与子类属性独立
jvm·数据库·python
SelectDB1 小时前
Apache Doris 4.1:面向 AI & Search 的统一数据存储与检索底座
大数据·数据库·数据分析
djjdjdjdjjdj1 小时前
PHP函数如何监控CPU温度传感器_PHP读取核心温度硬件值【详解】
jvm·数据库·python
m0_613856291 小时前
c++怎么把多个变量一次性写入二进制文件_结构体对齐与write【实战】
jvm·数据库·python