当前位置: 首页 > news >正文

初识MYSQL —— 数据类型

前言

了解了数据库和数据表的相关操作,现在来学习数据库中能够存储的数据类型

数据类型分类

在这里插入图片描述

MYSQL数据库中,常见的类型如上图所示,现在来依次了解这些数据类型。

数值类型

1. 整数类型

常见的整数类型:

在这里插入图片描述

这些整数类型字节大小不同,能存储的数据范围就有所不同。

例如:TINYINT1字节,数据范围:[-128, 127];无符号TINYINT类型数据范围:[0 , 255]

这里以TINYINT为例,做一下数据的插入,其他的整数类型类似。

在这里插入图片描述

要创建无符号tinyint类型的字段,在创建数据表时在字段后面带上unsigned即可。

在这里插入图片描述

2. bit类型

上述的整数类似,大小都以字节为单位;而位字段类型是以bit位为单位的。

在创建数据表时,也可以以bit为单位,创建字段。

a bit(M)

在创建数据表时,可以通过M指明所占用的bit位数;M取值范围:[1 , 64];(如果忽略M,默认就是1

在这里插入图片描述

可以看到,1bit位的数据范围是[0 , 1],依次类推,2bit位的数据范围就是[0, 3]

在上述插入数据的操作中,在使用select查看数据时,查看不到bit字段的01

**bit字段在显示时,是按照ASCII码对应的值显示 **

我们查看不到bit字段的01,是因为01ASCII码对应的字符不可显示;

这里我们插入97-a这些数值,我们就能够使用select查看到插入的数据了。

在这里插入图片描述

2. 浮点数类型

mysql数据库当中,除了可能已存储整数、bit位字节类型数据,还可以存在浮点数类型。

常见的浮点数类型:floatdoubledecimal

float类型

定义float类型的格式:float(m,d)(也可以指定定义float

m表示指定显示长度,d表示小数位数。

例如:float(4,2),显示长度4,小数位数2,数据范围就是-99.99 ~ 99.99

在这里插入图片描述

注意:如果设置成无符号(float(4,2) unsigned),数据范围就是 :0 ~ 99.99

在这里插入图片描述

decimal类型

decimal类型使用和float的使用一样,都是可以指明显示长度和小数位数。

decimal(5,2)类型数据范围:-999.99 ~ 999.99

decimal(5,2) unsigned数据范围: 0 ~ 999.99

decimalfloat的区别

精度不同

decimal想比于float,精度更高。

如果需要小数的精度更高,就可以使用decimal

FLOAT(M,D)        -- M=总位数,D=小数位;MySQL 8.0.17 起被废弃,仅保留 FLOAT
DOUBLE(M,D)       -- 同上,8.0.17 起也废弃
DECIMAL(M,D)      -- 默认 (10,0);M≤65,D≤30,且 D≤M

文本类型

1. char

char类型是固定长度字符串,在使用时需要指明长度。

char(L)  -- L表示存储的长度,单位是字符,最大长度为255

注意,这里单位是字符,一个中文汉字也是一个字符。

在这里插入图片描述

2. varchar

varchar是可变长度字符串,在使用时需要指明字符串最大长度;

varchar(L)  -- L表示字符串最大长度

在这里插入图片描述

varchar(len)len的最大值

varchar可以支持0 ~ 65535字节长度,其中有1-3字节用来记录数据大小;有效字符长度字节数是65532

  • 如果表的编码是utf8,一个字符占3个字节,varchar(len)len的最大值:65532/3 = 21884
  • 如果表的编码是gbk,一个字符占2个字节,varchar(len)len的最大值:65532/2 = 32766

在这里插入图片描述

这里表编码集是utf8len最大值就是21845,指明长度超过21645就会报错。(让我们使用TEXT文本类型)

charvarchar的区别:

char是定长字符串,varchar可变长字符串,varchar的变长体现在哪里呢?

在定义时,varchar指明的是字符串的最大长度,而char指明的是字符串的长度。

  • char在实际存储时,无论字符串长度为多少,存储的都是固定的长度。
  • varchar在实际存储时,会根据实际字符串的长度,动态存储。

在这里插入图片描述

  • 定长:直接开辟好对应的空间;磁盘空间比较浪费,但是效率高。
  • 变长:在不超过自定义范围的情况下,用多少空间,就开辟多少空间。磁盘空间相对节省,但效率低。

如果存储数据长度固定,就使用定长char

如果存储数据长度有变化,就使用变长varchar

时间和日期

mysql中,除了存储数值和文本类型,还可以存储时间。

常见的时间类型:

  • date : 日期;格式yyy-mm-dd3字节大小。
  • datetime : 日期时间;格式yyy-mm-dd HH:ii:ss4字节大小。
  • timestamp :时间戳;1970年开始格式与datetime完全一致,4字节大小

对于日期date、日期时间datetime还是非常容易理解的;这里主要看一下时间戳:

时间戳timestamp,它会自动更新,不需要我们显示插入。

简单来说就是:在插入数据时,时间戳这一列会自动插入(获取当前时间);在数据更新时,时间戳也会自动更新。

在这里插入图片描述

枚举类型

枚举类型,简单来说就是:提供若干个选项的值,在插入时在这些选项中选择一个或者若干个值插入。

1. enum

语法:

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

enum是提供若干个选项的值,但在最终的一个单元格中,实际存储了其中一个值。(在插入数据时选择其中一个插入)。

这些值实际存储的都是数字,因为每一个选项都一次对应一个数字:1,2,3,...。(在插入时,也可以选择数字插入

例如:在信息表中,要记录性别,就可以使用enum枚举

在这里插入图片描述

2. set

enum是枚举多个选项,选择其中一个插入,而set则是提供多个选项值,选择其他若干个进行插入。

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

在插入时和enum类似,可以使用若干个选项值进行插入,也可以使用数字进行插入。(存储的都是数字

但是set的这个数字和enum有所不同:

  • enum中的数字类似于下标,1开始(因为enum只选择一个选项值进行插入)
  • set中使用的数字可以当中位图,使用二进制中一个bit位表示是否插入该选项(因为set可以选择若干个选项值进行插入)

位图:

  • 0对应二进制:0000 0000,插入空数据;
  • 3对应二进制:0000 0011,插入选项1,选项2。

例如,在表中要存储爱好,每个人爱好都可能存在多个,此时就可以使用set

在这里插入图片描述
本篇文章到这里就结束了,感谢支持
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws

http://www.dtcms.com/a/453278.html

相关文章:

  • 大型网站建设行情南通专业网站设计制作
  • 【AI智能体】Coze 打造AI数字人视频生成智能体实战详解:从0到1构建可交互虚拟主播
  • LabVIEW使用3D场景光照
  • 河北建设厅网站修改密码在哪wordpress 前台 很慢
  • 数字设计 综合工具 yosys 源码安装与应用简介
  • HikariCP 连接池完全指南
  • 绵竹网站建设大连装修公司
  • C++空值初始化利器:empty.h使用指南
  • 电子版康奈尔笔记写作方案对比
  • (3)SwiftUI 的状态之上:数据流与架构(MVVM in SwiftUI)
  • 郴州网站seo个人兴趣网站设计
  • wordpress企业站源码做qq群头像网站
  • Vue和React怎么选?全面比对
  • C++之再谈类与对象
  • 巫山做网站那家好企业网站的建立
  • 深度学习基础:从原理到实践——第一章感知机(中)
  • 企业网站策划怎么样揭阳模板网站建站
  • 计算机网络第四章(8)——网络层《ICMB网际控制协议》
  • 网络教育网站如何做营销推广做ppt必备网站
  • 移植到Linux,Avalonia初次尝试意外美好
  • asp网站管理系统源码免费申请163邮箱
  • 欧拉公式剖析
  • 冲刺校招 打卡 day02
  • 【精品资料鉴赏】312页WORD 详解发电企业数字化转型规划方案()
  • 进阶 C++ 学习总结与核心感悟
  • gRPC从0到1系列【24】
  • 无锡设计师网站又拍云wordpress全站cdn
  • LeetCode 刷题【106. 从中序与后序遍历序列构造二叉树】
  • 大模型的核心原理
  • 用友u8 erp和免费生产排程软件isuperaps通过sql实现数据集成示例