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

【MySQL】数据类型

🏠个人主页:Yui_
🍑操作环境:Centos7
🚀所属专栏:MySQL

image.png

文章目录

  • 前言
  • 1. bit类型
  • 2.tinyint类型
  • 3. float类型
  • 4. decimal
  • 5. char类型
  • 6. varchar
  • 5&6 char和varchar的比较
  • 7.日期和时间类型
  • 8.enum和set
  • 总结

前言

数据库也是有数据类型的,各个类型也有不同的数据范围。在前面的文章中我们只使用到了varchar这个类型,其实MySQL中还是有许多的其他类型:
image.png
上表只是对数据类型的简单介绍,下面就开始详细的讲解MySQL中的数据类型~

1. bit类型

语法:

bit [(num)]

位字段类型,num表示每个值的位数,范围从1到64,如果M被忽略,默认为1.
image.png
创建一个占3比特的a属性,也就表达了它的数据范围为0~7(000~111)b
下面就来验证是否如此:
image.png
可以看到的是,7和0都插入成功了,但是8就失败了。和预期结果相同。
但是,在查看表内容的时候就很奇怪,内容呢?
看上去好像有内容,但是我们看不见,这就和bit的显示方式有关了,bit的显示方式是按照ASCII码表显示的。就像a的ASCII码为97.
为了验证是不是,我修改下属性类型。
image.png
事实证明确实如此~
恭喜你掌握一个数据类型了,继续看下去吧。

2.tinyint类型

根据上面表中的数据范围,tinyint的数据访问为-128~127,这个范围就是一个字节(8比特位)可以表示的范围。
image.png
此时并没有指定无符号的tinyint,所以范围为-128~127
image.png
符合要求,下面开始添加一个属性,数据类型为无符号的tinyint,再测试一次。
image.png

了解完tinyint那么smallint mediumint int bitint都是如此,只是数据范围不同而且,读者可以自行测试。

3. float类型

光有整型肯定是满足不了真实的使用情况的,float就是MySQL中表示小数(浮点数)的类型。
语法:

float [(m,d)] [unsigned]
  • m:指定显示长度。
  • d:指定小数位数。
    比如(4,2)的正确小数表达有12.21。可以表达的范围为-99.99~99.99
    注意:MySQL在保存值的时候会四舍五入。
    image.png
    创建一个数据类型为float(4,2)的属性。
    先来验证四舍五入吧
    image.png
    好像有点问题,12.996确实四舍五入了,但是12.995并没有。这是一个很奇特的现象。
    后续我还测试了90.995,这个就可以四舍五入为91.00
    这种不一致可能是由于浮点数在计算机中的表示方式导致的。计算机在处理十进制小数时,可能会出现微小的误差,导致四舍五入的结果不一致。
    例如,10.995 在内部可能被表示为略小于 10.995,如 10.994999...,因此在四舍五入时被截断为 10.99。而 90.995 可能被表示为略大于 90.995,如 90.995000...,因此在四舍五入时被提升为 91.00
    所以如果我们确定了表示范围,最好不要插入超过范围的值,结果可以会和你想的不同。
    无符号的float我就不验证了,读者可以自行验证。

4. decimal

可以理解为精度更高的float,类似于C++中的double。
语法和float完全相同。

decimal [(m,d)] [unsigned]

如果你希望获得更高的精度,推荐使用decimal
image.png

5. char类型

语法:

char (L)

固定长度字符串,L是可以存储的长度,单位为字符,最大长度可以为255.
注意:这里的单位为字符不是字节,且再MySQL中不论是字母还是汉字都一个字符。
image.png
还是先创建一个表来演示。
image.png

6. varchar

语法:

varchar(L)

可变长度的字符串,L表示字符长度,最大长度65535字节。
注意:长度同样是字符,但是最大长度是字节。
根据最大长度,我们可以推测出最多能存储多少个汉字,一个汉字占3个字节(utf8).
65,535/3=21,845
吗?
其实,在varchar还有1~3个字节专门用来记录数据长度,这样实际可以使用的字节就少了。
(65535-3)/3 = 21844.
下面来验证是不是这样。
image.png
事实确实人如此,不过要记住,这是utf8的时候,其他字符集要另算给。

5&6 char和varchar的比较

以下总结来自CPT:

特性CHAR(n)VARCHAR(n)
含义固定长度字符串,长度固定为 n 字符可变长度字符串,最多 n 个字符
空间分配不足部分会用空格填充(补全到 n 个字符)精确保存实际内容长度 + 1 或 2 字节长度信息
性能更快(特别是定长数据)稍慢,因需额外处理长度信息和变长对齐
存储空间更大(总是占用 n 字符空间)更节省(只占用实际数据长度)
应用场景内容长度固定,例如身份证号、状态码内容长度不定,例如文章标题、地址等
  • CHAR 更适合频繁修改、搜索的定长字段
    • 如:国家代码、电话区号、性别等
    • 因为定长数据对齐快、比较快
  • VARCHAR 更适合存储变化较大或较长的数据
    • 如:地址、简介、备注等
    • 节省存储空间,避免空格填充浪费

7.日期和时间类型

MySQL中的时间类型有这3个:date、datetimetimestamp`

  • date:日期yyyy-mm-dd占用3字节。
  • datetime:时间日期格式yyyy-mm-dd HH:ii:ss,表示范围从1000到9999占用八字节。
  • timestamp:时间戳,从1970年开始,格式同datetime 占用4个字节。
    image.png
    注意:添加时间时,时间戳会自动补全当前时间。
    image.png
    更新数据时,时间也会更新。

8.enum和set

语法:

  • enum:枚举,’单选‘类型。
enum('选项1','选项2'...)

该设定只是提供了若干个选项的值,最终一个单元中实际只存储一个值;而且出于效率的考虑,这些值实际存储的是数字,可以把数字看作为下标,选项最多为65535个,当我们添加枚举值时,也可以添加对应数字的数字编号。

  • set:集合,多选类型。
set('选项1','选项2'...)

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,… 最多64个
为了演示,创建一个调查表,记录姓名,性别,爱好。
image.png

根据上面的介绍,性别肯定只能选一个,但是爱好可以多选。
现在开始插入数据:
image.png

总结

本位介绍了MySQL中的数据类型,也了解的各个数据类型的具体用法,数据范围。希望大家在后续的创建表的过程中,可以合理使用这些数据类型。


往期文章:
【MySQL】数据库基础-CSDN博客.
【MySQL】库的操作-CSDN博客
【MySQL】表的操作-CSDN博客

相关文章:

【MySQL】数据类型

🏠个人主页:Yui_ 🍑操作环境:Centos7 🚀所属专栏:MySQL 文章目录 前言1. bit类型2.tinyint类型3. float类型4. decimal5. char类型6. varchar5&6 char和varchar的比较7.日期和时间类型8.enum和set总结 …...

Mac上Cursor无法安装插件解决方法

可能是微软的vscode被cursor这些新晋的AI-IDE白嫖够了,所以现在被制裁了,cursor下载不了vscode插件了。​需要自己修改扩展商店源。 近期微软调整了 API 鉴权策略或限制了非官方客户端的访问权限。 解决方案 一、找到 product.json 文件 打开终端&…...

PI0 Openpi 部署(仅测试虚拟环境)

https://github.com/Physical-Intelligence/openpi/tree/main 我使用4070tisuper, 14900k,完全使用官方默认设置,没有出现其他问题。 目前只对examples/aloha_sim进行测试,使用docker进行部署, 默认使用pi0_aloha_sim模型(但是文档上没找到对应的&…...

NumPy数组和二维列表的区别

在 Python 中,NumPy 数组和二维列表在性能方面存在诸多不同,下面从存储方式、内存占用、操作速度、缓存局部性这几个角度详细分析。 存储方式 二维列表:它是 Python 内置的数据结构,列表中的每个元素实际上是一个引用&#xff0…...

学习设计模式《四》——单例模式

一、基础概念 单例模式的本质【控制实例数目】; 单例模式的定义:是用来保证这个类在运行期间只会被创建一个类实例;单例模式还提供了一个全局唯一访问这个类实例的访问点(即GetInstance方法)单例模式只关心类实例的创建…...

构建具备推理与反思能力的高级 Prompt:LLM 智能代理设计指南

在构建强大的 AI 系统,尤其是基于大语言模型(LLM)的智能代理(Agent)时,Prompt 设计的质量决定了系统的智能程度。传统 Prompt 通常是简单的问答或填空式指令,而高级任务需要更具结构性、策略性和…...

NLP 梳理03 — 停用词删除和规范化

一、说明 前文我们介绍了标点符号删除、文本的大小写统一,本文介绍英文文章的另一些删除内容,停用词删除。还有规范化处理。 二、什么是停用词,为什么删除它们? 2.1 停用词的定义 停用词是语言中的常用词,通常语义…...

算法—插入排序—js(小数据或基本有序数据)

插入排序原理:(适合小规模数据) 将数组分为“已排序”和“未排序”两部分,逐个将未排序元素插入到已排序部分的正确位置。 特点: 时间复杂度:平均 O(n),最优(已有序)O(n…...

家庭电脑隐身后台自动截屏软件,可远程查看

7-4 本文介绍一个小软件,可以在电脑后台运行,并且记录电脑的屏幕画面保存下来,并且可以远程提取查看。 可以用于记录长时间运行的软件的执行画面过程,或者用于记录家庭中小孩使用电脑的过程,如果没有好好上网课&…...

【Agent】AI智能体评测基座AgentCLUE-General

note AgentCLUE-General将题目划分为“联网检索”、“数据分析”、“多模态理解”和“多场景组合”任务AgentCLUE-General为每个题目都提供一个标准答案,将Agent智能体的答案与标准答案进行规则匹配判断对错 文章目录 note一、任务划分和场景划分二、答案提取的pro…...

最新iOS性能测试方法与教程

一、工具instrument介绍 使用Xcode的instrument进行测试,instrument自带了很多性能方面的测试工具,如图所示: 二、常见性能测试内容 不管是安卓还是iOS的性能测试,常见的性能测试都要包含这五个方面: 1、内存&#xff…...

多模态大语言模型arxiv论文略读(三十)

Mastering Text-to-Image Diffusion: Recaptioning, Planning, and Generating with Multimodal LLMs ➡️ 论文标题:Mastering Text-to-Image Diffusion: Recaptioning, Planning, and Generating with Multimodal LLMs ➡️ 论文作者:Ling Yang, Zhao…...

【AI论文】CLIMB:基于聚类的迭代数据混合自举语言模型预训练

摘要:预训练数据集通常是从网络内容中收集的,缺乏固有的领域划分。 例如,像 Common Crawl 这样广泛使用的数据集并不包含明确的领域标签,而手动整理标记数据集(如 The Pile)则是一项劳动密集型工作。 因此&…...

AI大模型发展现状与MCP协议诞生的技术演进

1. 大模型能力边界与用户痛点(2023年) 代表模型:GPT-4(OpenAI)、Claude 3(Anthropic)、通义千问(阿里云)等展现出强大的生成能力,但存在明显局限&#xff1a…...

从malloc到free:动态内存管理全解析

1.为什么要有动态内存管理 我们已经掌握的内存开辟方法有: int main() {int val 20;//在栈空间上开辟四个字节char arr[20] { 0 };//在栈空间上开辟10个字节的连续空间return 0; }上述开辟的内存空间有两个特点: 1.空间开辟的时候大小已经固定 2.数组…...

CSS值和单位

CSS值和单位 CSS 中的值和单位是构建样式的基础,它们定义了属性的具体表现方式。值用于定义样式属性的具体取值,而单位用于指定这些值的度量方式。CSS中常用的值和单位如下: 1.长度单位 px : 像素,绝对单位 em : 相对于元素的字…...

Redis高级篇之I/O多路复用的引入解析

文章目录 一、问题背景1. 高并发连接的管理2. 避免阻塞和延迟3. 减少上下文切换开销4. 高效的事件通知机制5. 简化编程模型6. 低延迟响应本章小节 二、I/O多路复用高性能的本质1. 避免无意义的轮询:O(1) 事件检测2. 非阻塞 I/O 零拷贝:最大化 CPU 利用率…...

FTP协议命令和响应码

文章目录 📦 一、什么是 FTP 协议?🧾 二、FTP 常见命令(客户端发送)📡 三、FTP 响应码(服务端返回)📌 响应码分类(第一位)✅ 常见成功响应码&…...

在win上安装Ubuntu安装Anaconda(linx环境)

一,安装Ubuntu 1. 在 Microsoft 商城去下载Ubuntu(LTS:是长期维护的版本) 2.安装完之后启动程序,再重新打开一个黑窗口: wsl --list --verbose 3.关闭Ubuntu wsl --shutdown Ubuntu-22.04 WSL2 Ubuntu-20.04文件太占c盘空间,…...

【Elasticsearch入门到落地】11、RestClient初始化索引库

接上篇《10、初始化RestClient》 上一篇我们已经完成了RestHighLevelClient的初始化工作,本篇将正式进入索引库的创建阶段。我们将使用Java代码来创建酒店数据的索引库。 一、准备工作 1. 创建常量类 首先,我们需要定义一个常量类来存放索引库的mappi…...

远程服务调用的一些注意事项

引言 最近工作中,遇到了一些关于远程服务调用的问题,背景是调用三方接口获取某些特征数据,但由于调用出现了超时,导致业务本身的接口的可用行降低。因此整理一些远程服务调用时的注意事项,通过不同维度的考虑来提高系…...

QML 样式库

在 QML 中,样式库(或 UI 框架)用于快速构建一致且美观的界面。Qt/QML 本身不提供内置的完整样式库,但可以通过以下方式实现样式管理或使用第三方库。 1. Qt Quick Controls 2 样式系统 Qt Quick Controls 2 是官方提供的 UI 组件…...

[RHEL8] 指定rpm软件包的更高版本模块流

背景:挂载RHEL ISO使用kickstart安装操作系统,安装包未指定安装perl,但是安装完可以查到其版本,且安装的是ISO中多个版本中的最低版本。 原因:(1)为什么没有装perl,perl -v可以看到版…...

使用Python可视化洛伦兹变换

引言 大家好!今天我们将探讨一个非常有趣且重要的物理概念—洛伦兹变换。它是相对论的核心内容之一,描述了在高速运动下,时间、长度以及其他物理量是如何发生变化的。通过使用 Python 进行可视化,我们不仅可以更好地理解这个概念,还能感受到物理世界中的奇妙之处。 什么…...

【二叉树专题】一道深入浅出的 DFS 题:求二叉树的直径(含通俗易懂讲解)

题目: 给你一棵二叉树的根节点,返回这棵树的 直径。 直径 是任意两个节点路径中,最长的一条路径所经过的边数。 比如下面这棵树: 1/ \2 3/ \ 4 5它的最长路径是:4 → 2 → 5 或者 4 → 2 → 1 → 3&#xff0c…...

考研系列-计算机网络-第三章、数据链路层

一、数据链路层的功能 1.知识点总结 2.习题总结...

医药采购系统平台第10天02:按药品分类的统计按供货商统计按医院统计统计数据的导出DWR的配置和应用

如果想要获取相关的源码,笔记,和相关工具,对项目需求的二次开发,可以关注我并私信!!! 一 按药品分类的统计实现 1 按药品分类统计的需求 按药品统计:在指定时间段中采购量、采购金…...

Navicat、DataGrip、DBeaver在渲染 BOOLEAN 类型字段时的一种特殊“视觉风格”

文章目录 前言✅ 为什么 Boolean 字段显示为 [ ]?✅ 如何验证实际数据类型?✅ 小结 前言 看到的 deleted: [ ] 并不是 Prisma 的问题,而是数据库客户端(如 Navicat、DataGrip、DBeaver)在渲染 BOOLEAN 类型字段时的一种…...

(undone) 吴恩达版提示词工程 2. 指南

url: https://www.bilibili.com/video/BV1Z14y1Z7LJ?spm_id_from333.788.videopod.episodes&vd_source7a1a0bc74158c6993c7355c5490fc600&p2 别人的笔记 url: https://zhuanlan.zhihu.com/p/626966526 指导原则(Guidelines) 编写提示词有两个…...

VLC搭建本机的rtsp直播推流和拉流

媒体---流---捕获设备,选择摄像头,点击串流 x下一步 选择rtsp,点击添加 看到了端口,并设置路径: 选择Video -H 264 mp3(TS) 点击下一个, 点击流,就开始推流了 拉流,观看端&#x…...

Rocky Linux 9.1 修改网卡和DNS

在 Rocky Linux 9.1 中修改网卡和 DNS 配置可以通过 NetworkManager 工具实现(推荐)或直接编辑配置文件。以下是两种方法的详细步骤: 方法一:使用 nmcli 命令行工具(动态生效) 查看当前网络连接nmcli connection show # 输出示例: # NAME UUID …...

Web前端:常用的布局属性

常见的布局方式有哪些? float:浮动布局 ​position 定位布局 ​flex 弹性布局(display) ​table 表格布局(弃用) 一、HTML5 语义化布局标签 这些标签本身不提供布局能力,但能增强页面结构…...

XSS学习2

一、客户端的Cookie 1. 无状态的影响 无状态问题: HTTP协议的无状态特性导致每次请求都是独立的,无法保持会话。例如,在银行办理业务时,柜员不需要重复询问客户信息,但在计算机网络中,每次HTTP请求都需要重新认证用户…...

软件设计师/系统架构师---计算机网络

概要 什么是计算机网络? 计算机网络是指将多台计算机和其他设备通过通信线路互联,以便共享资源和信息的系统。计算机网络可以有不同的规模,从家庭网络到全球互联网。它们可以通过有线(如以太网)或无线(如W…...

Kubernetes(k8s)学习笔记(二)--k8s 集群安装

1、kubeadm kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。这个工具能通过两条指令完成一个 kubernetes 集群的部署&#xff1a; 1.1 创建一个 Master 节点$ kubeadm init 1.2 将一个 Node 节点加入到当前集群中$ kubeadm join <Master 节点的 IP 和…...

线性DP:最长上升子序列(子序列可不连续,子数组必须连续)

目录 Q1&#xff1a;简单遍历 Q2&#xff1a;变式&#xff08;加大数据量&#xff09; Q1&#xff1a;简单遍历 Dp问题 状态表示 f(i,j) 集合所有以第i个数结尾的上升子序列集合-f(i,j)的值存的是什么序列长度最大值max- 状态计算 &#xff08;其实质是集合的划分&#xff09;…...

SpringBoot 基本原理

SpringBoot 为我们做的自动配置&#xff0c;确实方便快捷&#xff0c;但一直搞不明白它的内部启动原理&#xff0c;这次就来一步步解开 SpringBoot 的神秘面纱&#xff0c;让它不再神秘。 目录 SpringBootApplication 背后的秘密 Configuration ComponentScan EnableAutoC…...

LeetCode第158题_用Read4读取N个字符 II

LeetCode 第158题&#xff1a;用Read4读取N个字符 II 题目描述 给你一个文件&#xff0c;并且该文件只能通过给定的 read4 方法来读取&#xff0c;请实现一个方法来读取 n 个字符。 read4 方法&#xff1a; API read4 可以从文件中读取 4 个连续的字符&#xff0c;并且将它…...

webgl入门实例-矩阵在图形学中的作用

矩阵在图形学中扮演着核心角色&#xff0c;几乎所有图形变换、投影和空间转换都依赖矩阵运算来实现高效计算。以下是矩阵在图形学中的主要作用及具体应用&#xff1a; 1. 几何变换 矩阵乘法可以高效表示物体的平移、旋转、缩放等基本变换&#xff0c;并通过矩阵连乘实现复合变…...

基于Matlab求解矩阵电容等效容值

1需求 仿真测试8*10阶举证电容等效容值。 2模型搭建 2.1打开simscape 在打开simulink之后打开simscape库&#xff0c;Simscape库位置如下 2.2搭建模型 在库中寻找需要的元件搭建电路。 2.2.1基本元件 电阻电容电感等基础器件&#xff0c;搭建电路之后需要对其进行幅值&…...

铅酸电池充电器方案EG1253+EG4321

参考&#xff1a; 基于EG1253EG4321铅酸电池(48V20AH)三段式充电器 屹晶微高性价比的电瓶车充电器方案——EG1253 电瓶电压 48V电瓶锂电池&#xff0c;其充满约为55V~56V&#xff0c;因此充电器输出电压为55V~56V&#xff1b; 若是48V铅酸电池&#xff0c;标称电压为48V&…...

每天学一个 Linux 命令(26):less

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/26/index.html less 是 Linux 中一个强大的文件内容查看工具,用于分页显示文件内容,支持快速搜索、滚动浏览、跳转等操作。相比 more,less 功能更丰富且支持向前和向后翻页,适合查看大文件或日志。 命令格式 les…...

【网络】数据链路层知识梳理

全是通俗易懂的讲解&#xff0c;如果你本节之前的知识都掌握清楚&#xff0c;那就速速来看我的笔记吧~ 自己写自己的八股&#xff01;让未来的自己看懂&#xff01; &#xff08;全文手敲&#xff0c;受益良多&#xff09; 数据链路层 我们来重新理解一下这个图&#xff1a;…...

2.2 BackgroundWorker的使用介绍

BackgroundWorker 是 .NET Framework 中一个简化异步操作的组件&#xff0c;它位于 System.ComponentModel 命名空间下。它为开发人员提供了一种简单的方式在后台执行耗时操作&#xff0c;同时保持与 UI 线程的交互 主要属性以及任务如下&#xff1a; DoWork 事件&#xff1a;…...

Java从入门到“放弃”(精通)之旅——类和对象全面解析⑦

Java从入门到“放弃”&#xff08;精通&#xff09;之旅&#x1f680;——类和对象全面解析⑦ 一、面向对象初探 1.1 什么是面向对象&#xff1f; Java是一门纯面向对象的语言(OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。面向对象是解决问题的一种思想&a…...

无回显RCE

在CTF和实战渗透中&#xff0c;不是每一个命令执行点都有回显&#xff0c;有时我们审了半天代码&#xff0c;却发现好不容易找到的命令执行没有回显&#xff0c;但是这并不代表这段代码不能被我们利用&#xff0c;在无回显的情况下也是可以利用的 首先我们来写一个最简单的php…...

DQN在Gym的MountainCar环境的实现

DQN on MountainCar 引言 在本次实验里&#xff0c;我构建了DQN和Dueling DQN&#xff0c;并在Gymnasium库的MountainCar环境中对它们展开测试。我通过调整训练任务的超参数&#xff0c;同时设计不同的奖励函数及其对应参数&#xff0c;致力于获取更优的训练效果。最后&#…...

typescript判断是否为空

1 判断数据类型 1.1 基础数据类型 比如number&#xff0c;string&#xff0c;boolean&#xff0c;使用typeof&#xff0c;返回值是string类型&#xff1a; 例如&#xff1a; if("number" typeof(item)) {egret.log("item的类型是number"); } else if(&…...

JavaScript forEach介绍(JS forEach、JS for循环)

文章目录 JavaScript forEach 方法全面解析基本概念语法详解参数说明 工作原理与其他循环方法的比较forEach vs for循环forEach vs map 实际应用场景DOM元素批量操作数据处理 性能考量常见陷阱与解决方案无法中断循环异步操作问题 高级技巧链式调用&#xff08;不使用 forEach …...

C语言之图像文件的属性

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 图像文件属性提取系统设计与实现 目录 设计题目设计内容系统分析总体设计详细设计程序实现…...