四.MySQL数据类型

article/2025/8/21 15:48:21

数据类型分类

一.数值类型

1.tinyint类型

MySQL 整数类型范围(有符号 / 无符号)

类型字节最小值(有符号/无符号)最大值(有符号/无符号)
TINYINT1-128 / 0127 / 255
SMALLINT2-32,768 / 032,767 / 65,535
MEDIUMINT3-8,388,608 / 08,388,607 / 16,777,215
INT4-2,147,483,648 / 02,147,483,647 / 4,294,967,295
BIGINT8-9,223,372,036,854,775,808 / 09,223,372,036,854,775,807 / 18,446,744,073,709,551,615

mysql> create table ttl(num tinyint); num字段 数据类型为tinyint 范围-128~127

在数据类型后加上unsigned 表示无符号

2.bit类型

bit(M)

  • M:表示位数(bit 数),范围是 1 ~ 64

  • 如果不写 M,默认是 BIT(1)

  • 存储时按位存放,但查询时按二进制数值处理。

新增了online 字段 类型为bit(2) 也就是只有两个bit大小的存储空间 00 ,只能表示0~3的数,

显示的时候以16进制进行显示。

bit(64) 有64bit位大小的空间 以16进制进行显示

3.浮点数类型

1.float类型

float(M,m) unsigned

M代表有几位数(整数位数+小数位数)

m代表小数位数 (四舍五入)

eg. float(4,2)代表4位数有两位小数可表示的范围-99.99~99.99 可写入的范围-99.994~99.994

unsigned 无符号 不能表示负数 范围0~99.99 0~99.994

float()默认范围:

  • 存储长度是 4字节(32位)

  • 能表示约 7 位十进制有效数字(总位数)

  • 小数位数不固定,精度是近似值非精确

2.decimal类型

简单来说decimal存储的数据更精准

对比点FLOATDECIMAL
精度约 7 位有效数字(近似)最多 65 位整数 + 30 位小数(精确)
有无误差✅ 存在舍入误差❌ 无误差(高精度)
示例插入插入 123.456789 → 123.457插入 123.456789 → 保留原值

二.字符串类型

1.char类型

char(M)

M指的是字符串中字符的个数 而不是字符串占的字节大小。

eg.char(2)表示:最多可以存 2 个“字符”,而不是 2 个字节

注意:char 的范围0~255 最多255个字符

2.varchar类型

varchar(L): 可变长度字符串,L表示最多可以存多少字符(和char不同的是 varchar是存多少字符就用多少字符的空间),最大长度65535个字节。

注意是字节而不是字符数:

关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:

编码格式每字符占用头部开销(长度标识)最大 L 值估算
utf83 字节1~2 字节65533 / 3 = 21844 字符以内
utf8mb44 字节最坏预留 2 字节65533 / 4 = 16383 字符以内
gbk2 字节1~2 字节65533 / 2 = 32766 字符以内
latin11 字节最多2字节最大约 65533 个字符
对比项char(n)varchar(n)
是否定长✅ 是,始终为 n 个字符❌ 否,存多少用多少(+1~2 字节额外)
存储空间固定长度,空白用空格补足实际字符长度 + 长度标记(1或2字节)
最大长度255 个字符(固定)65535 字节(字符数依编码而异)
性能读写快,适合频繁查询(不涉及变长)写入高效,空间节省,但查询稍慢
是否节省空间❌ 不节省,浪费空间✅ 节省空间
是否自动截断✅ 超过会被截断(有警告)✅ 超过也会截断(有警告)
使用场景建议身份证号、手机号、固定码、MD5等用户名、地址、留言、标题等变长内容
字符串长度n<=255  可以用1字节表示

255<n<=65535 用2字节表示 所以基本上2字节大小的空间就够记录字符串长度

为什么会出错?

表中已有字段(如 id_var)+ 元数据,合计超出65535限制

3.日期和时间类型

类型格式占用空间表示范围默认行为作用与应用场景
dateYYYY-MM-DD3 字节1000-01-01 到 9999-12-31无默认值纯日期,如生日、注册日、节假日等
datetimeYYYY-MM-DD HH:MM:SS8 字节1000-01-01 00:00:00 ~ 9999年手动赋值记录完整时间点,如下单、登录时间等
timestampYYYY-MM-DD HH:MM:SS4 字节1970-01-01 ~ 2038年默认自动记录当前时间系统日志、更新时间、创建时间戳等

 date保存日期  datetime保存日期+时间 timestamp也是日期+时间 但如果对表中insert into插入新行 或者 update更新除timestamp的其它字段会自动更新。

但为什么下面没有进行自动更新呢?

在创建timestamp字段时 必须指明default current_timestamp

_timestamp timestamp default current_timestamp;

加上这个可以看到 在插入新行时 timestamp自动刷新了

update更新其它字段的值 为什么没有自动刷新?

因为要在此基础上再加上on update current_timestamp,这样才可以在更新其它字段的值时 timestamp才会自动刷新。

timestamp字段更新为default current_timestamp on update current_timestamp

简单总结timestamp字段:

设置语句插入时是否自动填当前时间更新其他字段时是否自动刷新时间
无任何设置❌ 否❌ 否
default current_timestamp✅ 是❌ 否
on update current_timestamp❌ 否✅ 是
default current_timestamp on update current_timestamp✅ 是✅ 是

4.enum和set

类型含义存储机制最大选项数量特点应用场景
enum枚举类型(单选)存储为数字下标最多 65535 个选项每行只能存一个值性别、状态、分类字段
set集合类型(多选)存储为位图组合最多 64 个选项每行可存多个值(逗号分隔)兴趣标签、权限字段

enum 从多个选项选一个 可以通过字符串直接匹配或者通过数字(下标,下标从1开始)

set 从多个选项选多个  '选项1 , 选项2 ,  ... '或者通过数字(数字代表的是位图 7->000111 前三个选项 )可以输入0表示什么都不选为空。

注意:enum set可以不输入值 mysql> insert into t5 () values ();

在表中表示的就是 NULL  NULL

空!=NULL 空代表输入0什么都不选  NULL表示没输入

set集合查询find_ in_ set函数

从表中找出 包含动漫的行怎么找?

select * from 表 where 字段=值,但这样是精确查找 也就是说只会查找 只包含动漫的行。

要找set字段中包含动漫的行  select * from 表 where find_in_set(值,set字段);

找同时包含动漫 小说的行怎么办?

and 两个find_in_set的结果交集

select * from 表 where find_in_set(值,set字段) and find_in_set(值,set字段);


http://www.hkcw.cn/article/mCrKrJseED.shtml

相关文章

深度解构:Profinet转Profibus网关如何重塑产品分离装置的控制逻辑

PROFINET是一种基于以太网的工业以太网通讯协议&#xff0c;而PROFIBUS则是一种国际化的现场总线标准。在很多工业生产环境中&#xff0c;这两种通讯方式都有其各自的应用场合和优势。当产品分离装置需要同时使用PROFINET和PROFIBUS进行通信时&#xff0c;无锡耐特森PROFINET转…

EasyVoice:开源的文本转语音工具,让文字“开口说话“

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、EasyVoice是什么&#xff1f;1. 核心特性一览2. 技术架构概览 二、安装部署指南…

外航飞机疑盲降国内在建跑道 机组认错跑道复飞

5月28日,有网友发帖称,一架外国航空公司的飞机在降落西安咸阳国际机场时发生意外状况,疑似盲降正在建设中的跑道,接地后复飞。该事件引发网友关注。据网友所述,该飞机在准备降落时,地面指令让落23L(南一跑道),结果落向24L(正在建的南二跑道),然后指挥复飞了,最后落…

[Redis] Redis:高性能内存数据库与分布式架构设计

标题&#xff1a;[Redis] 浅谈分布式系统 水墨不写bug 文章目录 一、什么是Redis&#xff1f;一、核心定位二、核心优势三、典型应用场景四、Redis vs 传统数据库 二、架构选择与设计1、单机架构&#xff08;应用程序 数据库服务器&#xff09;2、应用程序和数据库服务器分离3…

论坛项目测试报告

一、项目背景 1.1 测试目标 验证论坛功能完整性&#xff0c;确保用户个人中心、发布/删除管理、模块分类控制、搜索功能等核心模块 符合需求。 1.2 项目技术栈 后端&#xff1a;Spring Boot/Spring MVC 数据库&#xff1a;MySQL 前端&#xff1a;原生 HTML/CSS/AJAX 二、…

(LeetCode 每日一题)3373. 连接两棵树后最大目标节点数目 II(贪心+深度优先搜索dfs)

题目&#xff1a;3373. 连接两棵树后最大目标节点数目 II 思路&#xff1a;贪心深度优先搜索dfs&#xff0c;时间复杂度0(nm)。 第二棵树&#xff1a;对每个节点进行分类&#xff0c;0或1&#xff0c;相邻的节点肯定不同啦&#xff0c;这样就可以统计出0和1 各自的节点个数。 …

开疆智能Profinet转Profibus网关连接EC-CM-P1 PROFIBUS DP从站通讯模块配置案例

本案例是通过开疆智能Profibus转Profinet网关将正弦研发的Profibus从站模块连接的EM600变频器接入到西门子1200PLC的配置案例。 配置过程 1. 打开网关配置软件“”新建项目并添加模块PN2DPM并设置参数 2. 设置网关的Profibus参数。如站地址&#xff0c;波特率等。&#xff08;…

【计算机常识】--环境变量

在 Linux/Unix 系统中&#xff0c;​​环境变量&#xff08;Environment Variables&#xff09;​​是操作系统或用户设置的全局参数&#xff0c;用于存储系统或程序的配置信息。其中&#xff0c;​​PATH​​ 是最重要的环境变量之一&#xff0c;它决定了系统在哪些目录中查找…

孙颖莎含泪感谢邱贻可 坚定追求大满贯梦想

孙颖莎含泪感谢邱贻可 坚定追求大满贯梦想!5月29日,在多哈世乒赛上,孙颖莎实现了混双三连冠并卫冕女单冠军。她坦言为自己感到骄傲与感动。当被问及是否还怀揣着实现大满贯的梦想时,孙颖莎坚定回答:“必须的!”采访中,她眼含热泪向邱贻可指导表示感谢,并表示希望未来能…

行为型:观察者模式

目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 5、注意事项 1、核心思想 目的&#xff1a;针对被观察对象与观察者对象之间一对多的依赖关系建立起一种行为自动触发机制&#xff0c;当被观察对象状态发生变化时主动对外发起广播&…

中国已不是美留学生第一大来源国 印度反超夺魁

中国已不是美留学生第一大来源国 印度反超夺魁!赴美留学的国际学生中,中国已不再是最多的。根据最新数据,印度已成为美国高校留学生的第一大来源国,占比29.4%(约33.1万人),而中国排在第二位,占比24.6%(约27.7万人)。两国留学生人数合计已经超过一半。过去,中国长期占…

Unity-QFramework框架学习-MVC、Command、Event、Utility、System、BindableProperty

QFramework QFramework简介 QFramework是一套渐进式、快速开发框架&#xff0c;适用于任何类型的游戏及应用项目&#xff0c;它包含一套开发架构和大量的工具集 QFramework的特性 简洁性&#xff1a;QFramework 强调代码的简洁性和易用性&#xff0c;让开发者能够快速上手&a…

【代码训练营Day02】数组part2

文章目录 长度最小的子数组螺旋矩阵II数组总结 长度最小的子数组 题目链接&#xff1a;209. 长度最小的子数组 滑动窗口法的解题思路&#xff1a; 首先初始化双指针&#xff0c;都指向数组头部end指针依次向后滑&#xff0c;每向后滑一项就加一项&#xff0c;直到满足要求达到…

千年后中国人又在举国之力挖运河 新运河时代来临

千年后中国人又在举国之力挖运河 新运河时代来临!近日,浙江《关于高水平建设“航运浙江”的实施意见》正式实施,明确提出“谋划推进浙赣运河”。这一消息再次引起热议。作为浙赣粤运河的一部分,浙赣运河途经浙江杭州、衢州和江西上饶、鹰潭、南昌等城市,规划全长约760公里…

网关Gateway

目录 Gateway作用 Gateway使用 Gateway作用 在微服务项目中&#xff0c;没有引入网关时&#xff0c;项目架构如下&#xff1a; 引入网关后&#xff0c;架构如下&#xff1a; 引入网关后&#xff0c;有如下优势&#xff1a; 1、客户端请求经过网关向后台统一分发请求&#xff0c…

Python打卡训练营-Day15-复习日

浙大疏锦行 作业&#xff1a; 尝试找到一个kaggle或者其他地方的结构化数据集&#xff0c;用之前的内容完成一个全新的项目&#xff0c;这样你也是独立完成了一个专属于自己的项目。 要求&#xff1a; 有数据地址的提供数据地址&#xff0c;没有地址的上传网盘贴出地址即可。尽…

使用MFC 写dap上位机在线烧写FLASH

1.使用BUS Hound 抓取KEIL5 正常烧写的通讯包协议 2.结束DAP 源码分析每条数据&#xff0c;主要通讯靠05 和06 3.动态加载FLM烧写算法. 最终效果

Orcad 修复Pin Name重复问题

Duplicate Pin Name “VDD” found on Package 问题描述 1、Orcad创建网表时报错,错误,描述为Pin Name重复(在Orcad中是不允许非Power的pin type的Pin Name相同的) #26 ERROR(ORCAP-36041): Duplicate Pin Name “VDD” found on Package 处理方式 修

以军称拦截也门胡塞武装发射的一枚导弹

以色列国防军当地时间29日发表声明称,以空军当天拦截了也门胡塞武装发射的一枚导弹,包括特拉维夫在内的部分以色列中部地区当天响起防空警报。有报道称,耶路撒冷传出爆炸声。以色列急救组织表示,暂时没有接到关于此次导弹袭击的人员伤亡报告。△本古里安国际机场(资料图)…

从微积分到集合论(1630-1910)(历史简介)——第3章——数学分析的出现及其基础性进展(1780-1880)(I.Grattan-Guinness)

第 3 章 数学分析的出现及其基础性进展 (The Emergence of Mathematical Analysis and its Foundational Progress,1780-1880) Grattan-Guinness 目录 3.1 数学分析及其与代数和几何的关系(Mathematical analysis and its relationship to algebra and geometry) 3.2 …