MySQL数据库(4)—— 数据类型
目录
一,数据类型分类
二,数值类型
2.1 tinyint类型
2.2 bit类型
2.3 float类型
2.4 decimal类型
三,字符串类型
3.1 char类型
3.2 varchar类型
四,时间日期类型
五,enum和set类型
5.1 基本使用
5.2 解释查找
一,数据类型分类
| 类型分类 | 类型 | 说明 |
|---|---|---|
| 数值类型 | BIT(M) | 位类型:M指定位数,默认值为1,范围为1-64 |
| BOOL | 布尔类型,1表示真,0表示假 | |
| TINYINT [UNSIGNED] | 占用1字节,默认为有符号 | |
| SMALLINT [UNSIGNED] | 占用2字节,默认为有符号 | |
| MEDIUMINT [UNSIGNED] | 占用3字节,默认为有符号 | |
| INT [UNSIGNED] | 占用4字节,默认为有符号 | |
| BIGINT [UNSIGNED] | 占用8字节,默认为有符号 | |
| FLOAT[(M,D)] [UNSIGNED] | 占用4字节,M指定显示长度,D指定小数位数 | |
| DOUBLE[(M,D)] [UNSIGNED] | 占用8字节,M指定显示长度,D指定小数位数 | |
| DECIMAL(M,D) [UNSIGNED] | M指定显示长度,D指定小数位数,每4个字节表示9个数字,小数点占用1字节 | |
| 字符串类型 | ENUM | 枚举类型:ENUM类型的取值范围需要在定义字段时进行指定,设置字段值时只允许从成员中选取单个值,其所需的存储空间由定义ENUM类型时指定的成员个数决定 |
| SET | 集合类型:SET类型的取值范围需要在定义字段时进行指定,设置字段值时可以从成员中选取一个或多个值,其所需的存储空间由定义SET类型时指定的成员个数决定 | |
| 时间日期类型 | DATE / DATETIME | 日期类型:YYYY-MM-DD格式 / YYYY-MM-DD HH:MM:SS格式 |
| TIMESTAMP | 时间戳:以YYYY-MM-DD HH:MM:SS格式进行显示 | |
| 文本,二进制类型 | CHAR(L) | 固定长度字符串:L指定字符串长度,最大为255 |
| VARCHAR(L) | 可变长度字符串:L指定字符串长度上限,最多占用65535字节 | |
| BLOB | 用于存储二进制数据 | |
| TEXT | 用于存储大文本数据 |
- 注意:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时,数据库会自动将其转换成tinyint(1)的数据类型,其实这个就是变相的bool类型,因为tinyint(1)代表只有一个二进制位,也就是只有1和0两种取值,可以分别对应bool类型的true和false。 (搞一个bool可能是为了完善理论)
二,数值类型
2.1 tinyint类型
①有符号tinyint
- tinyint占用1字节,是8各比特位,所以能表示的范围是 -128~127
- 如果插入的值超过这个范围就会报错

②无符号tinyint
- 范围是0~255,其余规则和有符号tinyint一样
- 除非场景必须要求要是无符号,否则尽量不要使用无符号,因为有符号的数值类型存不下的数据,其对应的无符号类型可能同样存不下,这时应该将数值类型进行提升

2.2 bit类型
我们先建一个表:

由于我们把bit的位数设置成1,表示只有一个比特位,所以只能插入0或1:

然后就是查询:

上面第一次查询时显示的online不是0或1,因为bit类型在显示时,是按照ASCII码对应的值进行显示的,如果我们插入的是65,那么显示的就是A ,如下:

2.3 float类型
①有符号float
float[(m,d)] [unsigned]; m表示指定长度,d表示小数位数,
- 比如我们定义float(4,2),那么就是代表4位数,范围是-99.99 ~ 99.99
- 并且float还有四舍五入机制,比如我们插入23.456,那么最后存的就是23.46

②无符号float
- 无符号就是去掉了负数,比如还是float(4,2) ,但是表示的范围只有0 ~ 99.99 了

2.4 decimal类型
- decimal类型的使用方式和float是一样的,但是decimal的精度更高

三,字符串类型
3.1 char类型
char(L) L最大为255
- 假设是char(6),那么只要插入的字符个数不超过6个都能成功插入,如果超过6个就会报错
- 这里说的字符不是单指一个字母,一个汉字也是一个祝福,所以也可以插入6个汉字

- 在不同编码中,一个字符所占字节个数是不同的,比如utf8中一个字符占3字节,gbk占2字节
- 这样MySQL中字符就不用字节来描述了,这样用户就不用关心复杂的编码细节了,能让用户使用更便捷
3.2 varchar类型
varchar类型的使用和char是一样的,但是二者有一些区别:
- char类型可存储的字符上限位255,varchar类型可存储的字符上限与表的编码格式有关
- char(L)定义后,不论字符串的长度是否达到L,都会开辟用于存储L个字符长度的定长空间,所以称为定长字符串类型
- 而varchar类型会根据字符串长度按需开辟空间,比如varchar(6)定义后,假设只存了两个字符,那么就只会开辟两个字符的空间,另外开辟1-3字节的空间用于表示存储字符串长度以及其它控制信息
varchar类型最多占用65535字节,其中1~2字节用来表示实际数据长度,还有1字节用来存储其它控制信息,所以varchar类型的有效字节数最多是65532字节
而varchar类型可指定的字符个数上限与表的编码格式有关:
- 对于utf8编码来说:一个字符占用三个字节,因此varchar(L)中的L最大可指定为 65532 ÷ 3 = 21844
- 对于gbk编码来说:一个字符占两个字节,因此varchar(L)中的L最大可指定为 65532 ÷ 2 = 32766
char和varchar的优缺点:
- char类型的数据是定长的,因此有一定的空间浪费,但是因为是定长的,所以访问效率较高
- varchar类型可以节省空间,但是由于要先读取部分信息然后再去读取数据,所以效率较低
如果数据是定长的比如手机号码、身份证号等定长数据就可以用char存;如果数据是变长的比如名字、 居住地址等就可以用varchar
四,时间日期类型
常用的三种时间日期类型如下:
- date:日期格式为YYYY-MM-DD,占三字节,允许为空
- datetime:时间日期格式为YYYY-MM-DD HH:MM:SS,占八字节,允许为空
- timestamp:为时间戳,格式为YYYY-MM-DD HH:MM:SS,占四字节;不允许为空,如果我们不插入该列数据,那么会自动填充当前的时间戳


使用timestamp创建评论表:

在插入评论人的昵称和评论的内容时,发布时间会默认设置成插入时间;并且如果修改了评论内容,对应的发布时间也会更新:

五,enum和set类型
5.1 基本使用
这两个类型的区别:
- 在定义enum字段时需要提供若干个选项,在正式设置enum字段时只能选取其中的一个值。
- 在定义set字段时需要提供若干个选项的值,在设置set字段值时可以选取其中的一个或多个值。
比如人的性别只有两个,因此可以定义成enum类型;而人的身份可以有多个,所以可以定义成set类型
创建一个表,包含姓名,性别,身份,如下:

在插入数据时,性别就只能二选一,身份就可以多选,身份通过逗号隔开:

MySQL出于效率考虑,在存储enum和set的值时实际存储的是数字,规则如下:
enum数字规则:
- enum中提供的选项值是持续递增的1、2、3、4持续递增,最多65535个
- 所以可以在设置enum时可以通过数字进行设置
set数字规则:
- set提供的选项值是1、2、4、8这样两倍递增的数字,最多64个
- 上面我们输入的是4,所以直接找到了第三个位置的值也就是“ 团员 ”
- 如果我们输入的是11,由于8的两倍是16,所以先找到8也就是第四个位置,然后用11减去8得到3,由于3比4小所以再次找到2,也就是第二个位置;最后3减去2剩下1,于是最后找到第一个位置,如下:
5.2 解释查找
先再插入一条信息方便演示:
insert into t10 values('赵六','男','实习生');
如果要筛选出表中所有男同志的信息,只要在搜索时指明“ gender='男' ”即可,但是如果要搜索到身份是实习生的人的信息就不好搞了,如下:

可以看到它是非常死板的单一匹配,不具备模糊匹配的功能,所以我们需要借助一个函数
find_in_set(str, strlist)函数介绍:
该函数作用是查询strlist中是否包含str,如果包含则返回str在strlist中的位置,从1开始,否则返回0下面是对该函数的演示:
所以我们通过select搭配find_in_set函数就可以实现模糊筛选了:

相关文章:
MySQL数据库(4)—— 数据类型
目录 一,数据类型分类 二,数值类型 2.1 tinyint类型 2.2 bit类型 2.3 float类型 2.4 decimal类型 三,字符串类型 3.1 char类型 3.2 varchar类型 四,时间日期类型 五,enum和set类型 5.1 基本使用 5.2 解释查…...
如何在Odoo 18中创建记录规则Rule
如何在Odoo 18中创建记录规则Rule 记录规则是管理访问控制的关键,它能让你依据用户角色,定义谁可以在系统内查看、创建或修改特定记录。例如,公司中的普通员工只能查看或修改与与自己直接相关的数据,而经理则有权限访问和编辑所有…...
petalinux高版本设置自动登录和开机自启动配置
petalinux-config -c rootfs 依次选择 Image Features -> serial-autologin-root 这是配置 进来就是root权限 创建并安装名为 myapp-init 的新建应用程序 petalinux-create -t apps --template install -n myapp-init --enable 编辑 project-spec/meta-user/recipes-…...
操作系统2.4
一、死锁,饥饿,死循环 死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象 饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象,例如:短进…...
Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例
1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…...
解析DrugBank数据库数据|Python
一、DrugBank 数据库简介 DrugBank 是一个综合性的生物信息学和化学信息学数据库,专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护,提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。DrugBank 结合了实验数据和…...
CUDA Toolkit 历史版本 cuda安装
cuda安装 CUDA Toolkit 版本选择1. NVIDIA-SMI 525.60.11静默安装2. CUDA Toolkit 12.6.0 安装禁用 nouveau依赖安装下载安装 cuda显卡驱动安装成功设置环境变量 3. 安装失败切换到多用户文本模式 参考 CUDA Toolkit 版本选择 CUDA Toolkit 历史版本 1. NVIDIA-SMI 525.60.11 …...
Aseprite详细使用教程(12)——轮廓工具和多边形工具
一、轮廓工具 (1)核心功能 轮廓生成:给鼠标起点和终点的连线以及两点经过的路径形成的轮廓,可单独指定轮廓颜色。 (2) 使用方法 选择工具后,鼠标左键点击,按住不松手,拖动…...
macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能
macos sequoia默认ctrlenter会打开鼠标右键菜单,使得很多软件有冲突。关闭方法: end...
分布式架构与XXL-JOB
目录 先了解什么是任务调度? 什么是分布式任务调度? 了解XXL-JOB分布式任务调度平台 如何搭建XXL-JOB? 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频,上传单个视频可能涉及到转码,…...
leetcode day18 移除元素 26+283
26 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...
【HarmonyOS Next】鸿蒙监听手机按键
【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。 这两种需求,鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…...
用Deepseek查询快证API-物流查询-实名认证-企业实名认证
快证API可能是一个提供多种验证和查询服务的平台,包括但不限于企业实名认证、短链接生成、手机号归属地查询、IP地址查询等。以下是根据搜索结果整理的关于快证API的相关信息: 企业实名认证API: 功能:通过与企业相关数据库进行…...
一个简洁高效的Flask用户管理示例
Flask-Login 是 Flask 的用户管理扩展,提供 用户身份验证、会话管理、权限控制 等功能。 适用于: • 用户登录、登出 • 记住用户(“记住我” 功能) • 限制未登录用户访问某些页面 • 用户会话管理 1. 安装 Flask-Login pi…...
分布式之分布式ID
目录 需求 1. 全局唯一性 2. 高性能 3. 高可用性 4. 可扩展性 5. 有序性 6. 时间相关 7. 长度适中 8. 安全性 9. 分布式一致性 10. 易于集成 常见解决方案 选择依据 数据库号段模式 核心概念 工作流程 优点 缺点 实现示例 优化策略 适用场景 Snowflake雪…...
(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念
目录 前言与导论 碎碎念 所以,我到底需要知道哪些东西呢 从一些基础的概念入手 常见的工具和说法 ST公司 MDK5 (Keil5) CubeMX 如何使用MDK5的一些常用功能 MDK5的一些常见的设置 前言与导论 非常感谢2301_77816627-CSDN博客的提问,他非常好奇…...
边缘计算网关与 PLC:注塑机车间数据互联新变革
在当今数字化浪潮席卷而来的时代,制造业的智能化转型成为了提升竞争力的关键路径。对于注塑机车间而言,如何实现数据的高效采集与互联,进而优化生产流程、提高生产效率,是众多企业亟待解决的问题。而明达MBox20边缘计算网关与 PLC…...
LeetCode刷题---哈希表---347
前 K 个高频元素 347. 前 K 个高频元素 - 力扣(LeetCode) 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1…...
LED灯闪烁实验:实验介绍
文章目录 1 实验目标2 工具链2.1 硬件2.2 软件 3 实验流程 1 实验目标 本实验结合Matlab/Simulink工具链和STM工具链,实现STM32开发板上的LED灯闪烁功能。 2 工具链 2.1 硬件 STM32F103C8T6最小系统板 STM32F103C8T6最小系统板是基于STM32F103C8T6微控制器的开发…...
论文笔记(七十二)Reward Centering(一)
Reward Centering(一) 文章概括摘要1 奖励中心化理论 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...




