MySQL-数据类型

MySQL-数据类型

  • 数值类型
    • bit
    • tinyint
    • float
    • decimal
  • 字符串和文本类型
    • char
    • varchar
    • blob
    • text
  • 日期和时间类型
  • enum-枚举类型
  • set-集合类型

数值类型

数据类型说明
bit(M)位类型。M指定位数,默认值为1,范围1-64.
tinyint [unsigned]带符号范围:-128 - 127,无符号范围: 0 - 255
bool使用0和1表示假和真
smallint [unsigned]带符号范围:-2^15 - 2^15 - 1,无符号范围:0 - 2^16 - 1
mediumint [unsigned]带符号范围:-2^23 - 2^23 - 1,无符号范围:0 - 2^24 - 1
int [unsigned]带符号范围:-2^31 - 2^31 -1,无符号范围:0 - 2^32 - 1
double [unsigned]带符号范围: -2^63 - 2^63 - 1,无符号范围: 0 - 2^64 - 1
float[(M,D)] [unsigned]M表示显示长度,D表示小数点的位数,占用4字节
double[(M,D)] [unsigned]精度比float更高的浮点数,占用8字节
decimal[(M,D)] [unsigned]M指定长度,D表示显示小数的位数

bit

🚀bit[M]:M表示使用的比特位数,范围为1-64,bit位在显示的时候是按照Ascll码来显示的。
在这里插入图片描述

insert into t1 values(10);
insert into t1 values(11);
insert into t1 values(12);

在这里插入图片描述
可以看到插入的三个数据是显示不出来的,那是因为Ascll值为10 11 12的字符为不可显字符。插入48那么显示出来就为‘0’;
在这里插入图片描述

tinyint

🚀tinyint占用1个字节,对于有符号而言取值范围是-128 - 127。无符号的范围是0 - 255。当用户在插入数据超出其所表示的范围后会拦截我们插入。
在这里插入图片描述

insert into t2 values(127,255);
insert into t2 values(-128,255);

在这里插入图片描述

mysql会对非法数据进行拦截

insert into t2 values(128,0);

在这里插入图片描述

float

🚀float[(M,D)], M:显示长度,D:指定小数位数。

  • 例如float(4,2)所能表示的范围就是(-99.99 - 99.99),如果用unsigned修饰那么范围就是(0 - 99.99)在插入数据时会四舍五入.
insert into t3 values(-99.99);
insert into t3 values(99.99);
insert into t3 values(99.994);
insert into t3 values(-99.994);

在这里插入图片描述
同样当超出其能表示的范围后也会对我们的插入做拦截。
在这里插入图片描述

decimal

🚀decimal的用法与float一样,与float的区别是decimal比float更加精确。

insert into t4 values(14.1234567,14.1234567);

在这里插入图片描述
🚀float的精度大约是7位,对于decimal而言,支持的最大整数位数65位,支持的最大小数位数30位。decimal(M,D)默认情况下M的值为10,D的值为0。
🚀float和double是采用标准的浮点数存储形式,decimal实际存储的是字符串。

字符串和文本类型

数据类型说明
char(size)固定长度字符串,size的最大值为255
varchar(size)可变长度字符串,最大长度为65535字节
blob二进制数据
text大文本,不支持全文索引,不支持默认值

char

🚀char(size):size的最大值为255,表示char字符串最多存储255个字符(注意是字符不是字节)

在这里插入图片描述
char(2)表示能够存储两个字符。

insert into t5 values('ab');
insert into t5 values('张三');//utf8编码规则下一个中文字符占用3个字节

在这里插入图片描述

varchar

🚀varchar(size)是变长字符串,当实际字符串长度小于size时,那么占用的空间以实际varchar长度为准。注意:这里的size指的是字节

  • varchar的长度为0-65535之间的值,但是其中要占用1-3字节来记录实际varchar的长度,所以varchar的实际可用长度最大为65532字节。
  • 那么,在不同的编码规则下,varchar所能存储的字符数量也是不同的,例如在utf8编码规则下一个字符占用3字节,所以varchar可存储的最大字符数为 65532 / 3。在gbk编码规则下一个字符占用2字节,所以varchar可存储的最大字符数为65532 / 2。

varchar和char该如何选择呢?

1.当存储一些定长的数据的时候,例如身份证号,手机号,学号等等,最好使用定长字符串。
2.当存储的数据长度不定的时候,例如名字,家庭住址,商品名称等等,最好使用变长字符串。
3.定长字符串IO效率高。
4.变长字符串IO效率低。

blob

🚀例如,在持久化存储的时候,通常都要对结构化数据进行序列化,将序列化后的数据进行持久化存储,序列化的工具有很多,Json,protobuf等等,使用protobuf序列化的结果就是二进制数据,此时就可以使用blob数据类型来存储。

text

🚀当存储一些大的文本数据时,就可以使用text数据类型,text数据类型不支持全文索引,不支持默认值。

日期和时间类型

🚀常用的时间类型有以下三种:

  • date:‘yyyy-mm-dd’,表示年月日,占用3字节。
  • datatime:‘yyyy-mm-dd HH:ii:ss’,表示年月日时分秒,表示范围1000-9999,占用8字节。
  • timestamp:时间戳,从1970年至今的秒数,表示的格式与datatime一致,占用4字节。

注意: 时间戳形式的数据在插入时不用显示的插入数据,系统会自动填入此时的时间戳,并且在进行更新数据时,时间戳数据也会自动更新。

在这里插入图片描述

insert into t7(birthday,time) values('2000-01-01','2000-01-01 15:15:15');

在这里插入图片描述

update t7 set time='2020-10-01 09:00:00';

在这里插入图片描述
可以看到更新数据时,时间戳字段也会自动更新。

enum-枚举类型

🚀enum类型,多选一,在实际存储的时候只会存储众多选项中的 某一个值。而处于效率考虑,这些值实际存储时存储的是‘数字’,枚举常量中的每个值对应 1…,最大到65535个,所用插入枚举值的时候,不仅可以使用枚举值也可以使用其对应的数字。

🚀例如,在表示性别的时候,就可以使用enum类型。

create table t8 ( sex enum('男','女') );

在这里插入图片描述

insert into t8 values('男');
insert into t8 values(1);

在这里插入图片描述
可以看到,无论插入’男’还是1,结果都是一样的。

set-集合类型

🚀set类型,支持多选一,多选多,当然也可以不选填入NULL值。同样,实际集合类型存储的也是‘数字’,集合中的每个选项对应1,2,4,8…,最多64个。可以理解为每个二进制位对应一个选项。在插入时同样可以使用数字。(无论枚举还是集合,不建议使用数字的形式,不易阅读)。

例如,描述一个人爱好的时候,就可以使用集合类型,比如一个人的爱好有抽烟,喝酒,烫头。

create table t10 ( id int, hobby set('跑步','游泳','篮球','足球','排球','骑行'));

在这里插入图片描述

insert into t10 values(1,'篮球,跑步,游泳'),(2,'篮球,排球,足球'),(3,'骑行,跑步,足球,游泳'),(4,'游泳');

在这里插入图片描述
🚀查询时可以使用名称和数字都可以。
在这里插入图片描述
在这里插入图片描述

7 = 1 + 2 + 4 :表示爱好为跑步,游泳,篮球的人。

面临的问题:例如,我们想查询出爱好有篮球的人,使用hobby=‘篮球’是不对的(这个意思是爱好只有篮球的人),可以借助find_in_set(sub,list)函数来完成。如果sub在list中返回其下标(从1开始),不在就返回0。

在这里插入图片描述

select * from t10 where find_in_set('篮球',hobby);

在这里插入图片描述

🚀选出爱好有骑行或者有游泳的人。

select * from t10 where find_in_set('骑行',hobby) or find_in_set('游泳',hobby);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/96441.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 filezilla 连接服务器失败问题

问题描述: 开始一直用的 XFTP 后来,它变成收费软件了,所以使用filezilla 代替 XFTP 之前用的还好好的,今天突然就报错了:按要求输入相关字段,连接 连接失败!!!o(╥﹏╥…

el-table 单击某一行,该行的前面的多选框显示已勾选

目 录 官网&#xff1a; 1. 单页面 2. table是组件 案例&#xff1a; 官网&#xff1a; 1. 单页面 通过单击获取当前行的数据&#xff0c;然后传给选中显示勾选的方法。 <template><el-tableref"multipleTable":data"tableData"tooltip-eff…

postgresql并行查询(高级特性)

######################## 并行查询 postgresql和Oracle一样支持并行查询的,比如select、update、delete大事无开启并行功能后,能够利用多核cpu,从而充分发挥硬件性能,提升大事物的处理效率。 pg在9.6的版本之前是不支持的并行查询的,从9.6开始支持并行查询,但是功能非常…

Windows docker desktop 基于HyperV的镜像文件迁移到D盘

Docker desktop的HyperV镜像文件&#xff0c;默认是在C盘下 C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx如果部署的软件较多&#xff0c;文件较大&#xff0c;或者产生日志&#xff0c;甚至数据等&#xff0c;这将会使此文件越来越大&#xff0c;容易导致C盘空间…

QT 设置应用程序图标

1.下载xx.ico图标&#xff1a;ico网址 2.在线PNG转换ICO&#xff1a;png在线转换ico 3.添加图标资源 1&#xff09;新建文件路径 2&#xff09;添加图片资源 3&#xff09;在 .pro文件里面添加图片 4&#xff09;将xx.ico放到工程目录&#xff0c;编译完可以看到xx.exe的图标…

Go几种读取配置文件的方式

比较有名的方案有 使用viper管理配置[1] 支持多种配置文件格式&#xff0c;包括 JSON,TOML,YAML,HECL,envfile&#xff0c;甚至还包括Java properties 支持为配置项设置默认值 可以通过命令行参数覆盖指定的配置项 支持参数别名 viper[2]按照这个优先级&#xff08;从高到低&am…

学生宿舍水电费自动缴费系统/基于javaweb的水电缴费系统

摘 要 “互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多学校日常工作仍是通过人工管理的方式进行&#xff0c;需要在各个岗位投入大量的人力进行很多重复性工作&#xff0c;这样就浪费了许多的人力物力&#xff0c;工作效率较低&#x…

Vue框架--Vue中el和data的两种写法

data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例&#xff0c;随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择&#xff1a;目前哪种写法都可以&#xff0c;以后学习到组件时&#xff…

前端面试中Vue的有经典面试题二

7. Vue中给data中的对象属性添加一个新的属性时会发生什么&#xff0c;如何解决&#xff1f; 示例&#xff1a; 点击button会发现&#xff0c; obj.b 已经成功添加&#xff0c;但是视图并未刷新&#xff1a; 原因在于在Vue实例创建时&#xff0c; obj.b 并未声明&#xff0c;因…

IIR滤波器

IIR滤波器原理 IIR的特点是&#xff1a;非线性相位、消耗资源少。 IIR滤波器的系统函数与差分方程如下所示&#xff1a; 由差分方程可知IIR滤波器存在反馈&#xff0c;因此在FPGA设计时要考虑到有限字长效应带来的影响。差分方程中包括两个部分&#xff1a;输入信号x(n)的M节…

Swift 中的动态成员查找

文章目录 前言基础介绍基础示例1. 定义一个动态成员访问类&#xff1a;2. 访问嵌套动态成员&#xff1a; 使用 KeyPath 的编译时安全性KeyPath 用法示例KeyPath 进阶使用示例1. 动态访问属性&#xff1a;2. 结合可选属性和 KeyPath&#xff1a;3. 动态 KeyPath 和字典&#xff…

文本标注技术方案(NLP标注工具)

Doccano doccano 是一个面向人类的开源文本注释工具。它为文本分类、序列标记和序列到序列任务提供注释功能。您可以创建用于情感分析、命名实体识别、文本摘要等的标记数据。只需创建一个项目&#xff0c;上传数据&#xff0c;然后开始注释。您可以在数小时内构建数据集。 支持…