《MySQL》第十二篇 数据类型

目录

    • 一. 整数类型
    • 二. 浮点类型
    • 三. 日期和时间类型
    • 四. 字符串类型
    • 五. 枚举值类型
    • 六. 二进制类型
    • 七. 小结

在这里插入图片描述

MySQL 支持多种数据类型,学习好数据类型,才能更好的学习 MySQL 表的设计,让表的设计更加合理。

一. 整数类型

类型大小SIGNED(有符号)UNSIGNED(无符号)说明
tinyint1字节-128~1270~255小整型
smallint2字节-32768~327670~65535小整型
mediumint3字节-8388608~83886070~16777215中整型
int4字节-2147483648~21474836470~49294967295整型
bigint8字节-9223372036854775808~92233720368547758070~18446744073709551615大整型

tinyint
tinyint 为小整数类型,存储空间为1个字节(8位),有符号范围-128 ~ 127,无符号范围 0 ~ 255,此类型通常在数据库中表示类型的字段,如某一字段 type 表示学科,其中 “type=1” 表示语文,“type=2” 表示数学, “type=3” 表示英语,此时 type 字段即可使用 tinyint 这种存储空间比较小的类型

smallint
smallint 为小整数类型,存储空间2个字节(16位),有符号范围 -32768 ~ 32767,无符号范围 0 ~ 65535,当遇到最大值不超过 65535 的整数类型字段时,可使用无符号 smallint 类型。

mediumint
mediumint 为中整数类型,存储空间3个字节(24位),有符号范围 -8388608 ~ 8388607,无符号范围 0 ~ 16777215,当遇到最大值不超过 16777215 的整数类型字段时,可使用无符号 mediumint 类型。

int
int 为整数类型,存储空间 4 个字节 ( 32位 ),有符号范围 -2147483648 ~ 2147483647,无符号范围 0 ~ 49294967295,当遇到最大值不超过 49294967295 的整数类型字段时,可使用无符号 int 类型,通常自增主键 id 使用 int 类型。

bigint
bigint 为大整数类型,存储空间8个字节(64位),有符号范围 -9223372036854775808 ~ 9223372036854775807,无符号范围 0 ~ 18446744073709551615,当遇到最大值不超过 18446744073709551615 的整数类型字段时,可使用无符号 bigint 类型,通常自增主键 id 使用 int 无法满足时,可以使用 bigint 类型。

二. 浮点类型

类型大小SIGNED(有符号)UNSIGNED(无符号)说明
float4字节-3.402823466E+38 ~ -1.175494351E-38,0,1.175494351E-38 ~ 3.402823466351E+380,1.175494351E-38 ~ 3.402 823 466 E+38单精度浮点型
double8字节-1.7976931348623157E+308 ~ -2.2250738585072014E-308,0,2.2250738585072014E-308 ~ 1.7976931348623157E+3080,2.2250738585072014E-308 ~ 1.797693134862315 7E+308双精度浮点型
decimal每4个字节存储9个数字,小数点占1字节DECIMAL(M,D),取决于M和D,M是整数部分,D是小数部分DECIMAL(M,D),取决于M和D,M是整数部分,D是小数部分精确类型,常用来表示金额

float
float 为单精度浮点类型,存储空间 4 个字节,支使用标准的浮点运算进行近似计算,若想知道浮点运算是怎么计算的,则需要研究操作系统的浮点数方式,通常对小数精度要求不那么高的字段可使用 float 类型。

double
double 为双精度浮点类型,存储空间 8个字节,相比float 有更高精度和更大的范围,通常对小数精度要求不那么高,但比 float 要求更高的字段可使用 double 类型。

decimal
decimal 类型用于存储精确的小数,若使用 float 类型来取代一些需要精确小数点类型的字段时,大的数据量会导致数据错误,比如金额,若使用 float 类型,可能会丢失精度,此时对于金额这样对精度要求很高的字段来说,可以选择使用 decimal 类型

三. 日期和时间类型

类型大小格式范围
date3字节YYYY-MM-DD1000-01-01 ~ 9999-12-31
time3-6字节HH::MM:SS[.微秒]-838:59:59 ~ 838:59:59
year1字节YYYY1901 ~ 2155
datetime5-8字节YYYY-MM-DD HH:MM:SS[.微秒值]1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 UTC
timestamp4-7字节YYYY-MM-DD HH:MM:SS[.微秒值]1970-01-01 00:00:00 ~ 2038-01-19 03:14:07 UTC

date
date 类型为日期类型,存储空间 3个字节,格式为 “YYYY-MM-DD”,例如 “2020-03-16”,日期的范围 “1000-01-01 ~ 9999-12-31”,通常只想用来存储如 “2020-02-02” 这种格式的日期字段时,可以选择使用 date 类型。

time
time 类型为时间类型,存储空间 3 ~ 6个字节,格式为 “HH::MM:SS[.微秒]” ,例如 “04:31:22.33”,范围 “-838:59:59 ~ 838:59:59”,通常只想用来存储如 “04:31:22.33” 这种格式的时间字段时,可以选择使用 time 类型。

year
year 类型为日期类型,存储空间 1 个字节 ,例如 “2020”,范围 “1901 ~ 2155”,通常只想用来存储如 “2020” 这种格式的日期字段时,可以选择使用 year 类型。

datetime
datetime 类型为精确时间的日期类型,存储空间为 5 ~ 8 个字节,格式为 “YYYY-MM-DD HH:MM:SS[.微秒值]”,例如 “2020-02-02 02:02:02.02”,范围 “1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 UTC”,通常只想用来存储如 “2020-02-02 02:02:02.02” 这种格式的日期字段时,可以选择使用 datetime 类型。

timestamp
timestamp 类型保存了从1970年01月01日午夜以来的秒数,它和 UNIX 时间戳相同,存储空间 4 ~ 7 个字节,范围 “1970-01-01 00:00:00 ~ 2038-01-19 03:14:07 UTC”,timestamp 显示的值依赖于时区,和 datetime 相比,前者提供的值与时区有关系,后者则保留文本表示的日期和时间。

四. 字符串类型

类型范围说明
char1~255个字符固定长度
varchar字段存储所占字节数不能超过65535字节可变长度
tinytext最大长度255字节可变长度
text最大长度65535个字节可变长度
mediumtext最大长度16777215个字节可变长度
longtext最大长度4294967295个字节可变长度

char
char 类型为定长字符串类型,适合存储很短的字符串,或者所有值都接近同一个长度,例如存储密码 md5 值,因为它是一个定长的值,对于经常变更的数据,char 比 varchar 更好,因为定长的 char 不容易产生碎片。

varchar
varchar 类型用于存储可变长度字符串,是最常见的字符串数据类型,对于短长度的字符串,它比定长的更为节省空间,varchar 节省空间对性能有帮助,varchar 类型的字符串有如下特点 :

字符串列的最大长度比平均长度大;
列的更新少,碎片问题较小;
使用了如 “UTF-8” 字符集,每个字符都使用不同的字节数来存储。

text
text 数据类型家族包括 : tinytext、text、mediumtext、longtext。 MySQL 把每个 text 值当做一个独立的对象处理。若 text 家族的值太大时,InnoDB 存储引擎会额外使用存储区域来进行存储,通常存储文章这样比较长的内容字段时,可选择 text 家族类型。

五. 枚举值类型

类型范围说明
enum几何数最大65535枚举值类型,只能插入列表中指定的值

enum
enum 类型为枚举值类型,有时可以使用枚举值替代字符串,枚举列可以把一些不重复的字符串存储为一个预定义的集合。 MySQL 在存储枚举时非常紧凑,会根据列表值的数量压缩到 1 ~ 2 个字节,例如 ENUM (‘黄色’,‘黑色’,‘蓝色’,‘紫色’),枚举值类型字段的需求也可以使用 tinyint 类型来替代。

六. 二进制类型

类型范围说明
tinyblob最大长度255字节可变长度
blob最大长度65535个字节可变长度
mediumblob最大长度16777215个字节可变长度
longblob最大长度4294967295个字节可变长度

blob
blob 数据类型家族包括 :tinybob、blob、mediumblob、longblob。和 text 家族一样,MySQL 把每个 text 值当做一个独立的对象处理。若 blob 家族的值太大时,InnoDB 存储引擎会额外使用存储区域来进行存储,blob 类型存储的是二进制数据,没有排序规则或字符集。

七. 小结

  1. MySQL 数值类型大小和取值范围,实际应用中要根据字段在业务中实际表示的含义来选择数值字段数据类型,例如年龄字段 age 选择无符号 TINYINT 类型,金额数值对精度要求比较高,所以选择 DECIMAL 类型比较合适,时间戳类型使用 INT,对于数据量比较大的表的自增主键 id 可选择 BIGINT,具体字段类型的选择,还需要根据实际情况来综合分析,合理选择即可,字段的默认值尽量避免 NULL。
  2. MySQL 日期时间类型和字符串类型,需要注意的是时间类型 TIME、DATETIME、TIMESTAMP 存储大小具体取决于微秒值,例如 TIME 类型,当微秒不存在的时候如 “12:12:12” 字节数为 3 字节(微秒 0 字节)"12:12:12.72"表示微秒 2 位,总共4字节(微秒1字节),“12:12:12.6173” 表示微秒 4 位,总共 5 字节(微秒2字节),“12:12:12.627127” 表示微秒 6 位,总共 6 字节,微秒字节位数对表如下:
微秒位数大小举例
00字节12:12:12
11字节12:12:12.3 或 12:12:12.32
32字节12:12:12.326 或 12:12:12.3653
53字节12:12:12.35812 或 12:12:12.352161
  1. char和varchar的区别
    char 类型是一种固定长度的类型,varchar 则是一种可变长度的类型,它们的区别是:char(M) 类型的数据列里,每个值都占用 M 个字节,如果某个长度小于 M,MySQL 就会在它的右边用空格字符补足

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

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

相关文章

Redis - 三大缓存问题(穿透、击穿、雪崩)

缓存穿透 概念: 查询一个数据库中也不存在的数据,数据库查询不到数据也就不会写入缓存,就会导致一直查询数据库 解决方法: 1. 缓存空数据 如果数据库也查询不到,就把空结果进行缓存 缺点是 - 消耗内存 2. 使用布…

【HMS Core】统一扫描连续扫码、闪光灯关闭问题

【问题描述1】 使用Default View Mode进行扫码,如何实现连续扫码 【解决方案】 在默认扫码模式Default View中,功能是集成在SDK内部的,无法设置连续扫码模式等信息。 可以使用Customized View Mode这种模式,它提供了相关的api可…

【软件测试】什么是selenium

1.seleniumJava环境搭建 前置条件: Java最低版本要求为8,浏览器使用chrome浏览器 1.1下载chrome浏览器 https://www.google.cn/chrome/ 1.2查看浏览器版本 点击关于Google chrome. 记住版本的前三个数. 1.3下载浏览器驱动 http://chromedriver.chromium.org/downloads 下载…

CSS鼠标样式(cursor)

CSS cursor 属性值 属性值示意图描述auto默认值,由浏览器根据当前上下文确定要显示的光标样式default 默认光标,不考虑上下文,通常是一个箭头none不显示光标initial将此属性设置为其默认值inherit从父元素基础 cursor 属性的值context-menu…

微信小程序中使用echarts方法

小程序中使用echarts echarts是一个基于JS的数据可视化图标库,它提供了直观,生动,可交互,可个性定制的数据可视化图表。一般在vue中会使用到,并且官网也详细的说明了如何在vue中使用,但是今天我想来探讨的…

vue-echarts配置项详解

起因 最近接手了一个vue3项目,echarts用的是"vue-echarts": “^6.0.0”,每次查看文档的时候痛苦不已,找一个配置要花费大量时间,所以这篇文章,主要就是为了记录比较常见的一些配置。 主要会写三种图的配置…

SAP财务系统中的“增值税”

1. 前言 在前一篇博客《SAP财务系统中的“复式记账法”》中,介绍了复式记账的基本原理,同时给出了在采购和销售流程中常见的记账科目,但也遗留了一些知识点,例如增值税等概念。 在本篇博客中,我们将覆盖这些知识点&a…

二、SQL-5.DQL-8).案例练习

1、查询年龄为20,21,22,23岁的员工信息 select * from emp where age in(20, 21, 22, 23) and gender 女; 2、查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工 select * from emp where gender 男 && age between 2…

如何进行SQL优化

一、SQL优化的主要步骤 在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生…

Electron 学习_BrowserWindow

BrowserWindow创建并控制浏览器窗口(主进程) 条件:在 app 模块 emitted ready 事件之前,您不能使用此模块。 1.在加载页面时,渲染进程第一次完成绘制时,如果窗口还没有被显示,渲染进程会发出 ready-to-show 事件 。 在…

广德上汽通用汽车平行试车场

技术栈:使用vue2JavaScriptElement UIvuexaxioscesium 项目描述:广德上汽通用汽车平行试车场是依托千寻孪界开发的一套展示实时车辆位置同步展示光照,时间,阴影等特效,完成平行时空效果的一款软件。 工作内容&#xff…

在线阅读版:《2023中国软件供应链安全分析报告》全文

聚焦源代码安全,网罗国内外最新资讯! 专栏供应链安全 数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。 随…

Istio Pilot源码学习(二):ServiceController服务发现

本文基于Istio 1.18.0版本进行源码学习 4、服务发现:ServiceController ServiceController是服务发现的核心模块,主要功能是监听底层平台的服务注册中心,将平台服务模型转换成Istio服务模型并缓存;同时根据服务的变化&#xff0c…

【LS科技芯团队成立】基础研究是科学之本、技术之源、创新之魂

目录 LS科技芯团队简介 团队创建人 成立本团队的核心目的 来自各个省份的大佬专家们 加入LS科技芯团队吧! LS科技芯团队简介 “LS科技芯”团队于2023年7月25日下午成立。汇聚了来自各个省份的技术博主,涵盖了电子技术,程序设计,…

【云原生】Docker镜像的创建,Dockerfile

一、Docker镜像的创建 创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 1.基于现有镜像创建 (1)首先启动一个镜像,在容器里做修改docker run -it --name web centos:7 /bin/…

财报解读:谷歌成功绝地反击?厮杀尚未真正开始!

在经历了一轮激烈的攻防战之后,谷歌、微软同一天发布了财报,从数据来看,谷歌成功抵御了微软携OpenAI发起的挑战,业绩表现全面超预期,而微软的业绩虽然整体也超预期,但相比其四面出击的高调则黯淡了许多。 巨…

stable diffusion如何确保每张图的面部一致?

可以使用roop插件,确定好脸部图片后,使用roop固定,然后生成的所有图片都使用同一张脸。 这款插件的功能简单粗暴:一键换脸。 如图所示: 任意上传一张脸部清晰的图片,点击启用。 在其他提示词不变的情况下…

Spring核心概念、IoC和DI的认识、Spring中bean的配置及实例化、bean的生命周期

初始Spring 一、Spring核心概念1.1IoC(Inversion of Contral):控制反转1.2IoC代码实现1.2DI代码实现 二、bean的相关操作2.1bean的配置2.1.1bean的基础配置2.1.2bean的别名配置2.1.3bean的作用范围配置 2.2bean的实例化 - - 构造方法2.3bean的实例化 - - 实例工厂与…

python基础

变量和简单的数据类型 变量 变量的命名规则: 1、只能包含字母、数字和下划线,并且不能以数字开头 2、变量名中不能是python中的保留字 字符串 字符串的几种定义方法 name Bob name "Bob" name """Bob"""…

Excel录制宏批处理:避免重复工作,轻松提升效率

在处理大量数据时,我们常常需要进行一些重复且繁琐的操作,这不仅费时费力,还容易出错。而Excel的录制宏批处理功能可以帮助我们避免这些重复的工作,提高工作效率。本文将为您介绍如何使用Excel的录制宏批处理功能,让您…