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

mysql--数据类型

目录

搞定所有数据类型

一、常见数据类型分类

二、数值类型

1、bit类型

2、float类型

​编辑3、decimal类型

4、字符类型

(1)char

(2)varchar

(3)varchar和char有甚区别?

(4)char varchar如何选择?

5、日期和时间类型

​编辑

6、Enum 和 set类型

比特位存储

7、Enum 和 set类型查找

find_in_set(xxx,filed_name)函数


一、常见数据类型分类

分类数据类型描述示例
数值类型tinyint1 字节,范围从 -128 到 127tinyint(3)
smallint2 字节,范围从 -32,768 到 32,767smallint
mediumint3 字节,范围从 -8,388,608 到 8,388,607mediumint
int / integer4 字节,范围从 -2,147,483,648 到 2,147,483,647int
bigint8 字节,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807bigint
float4 字节,单精度浮点数float(7,4)
double8 字节,双精度浮点数double
decimal / numeric精确数值,可以指定精度和小数位数decimal(10,2)
日期和时间类型date日期,格式为 'yyyy-mm-dd'date
datetime日期和时间,格式为 'yyyy-mm-dd hh:mm:ss'datetime
timestamp时间戳,自动初始化和更新timestamp
time时间,格式为 'hh:mm:ss'time
year年,格式为 'yyyy'year(4)
字符串类型char固定长度字符串,最大 255 字节char(10)
varchar可变长度字符串,最大 65,535 字节varchar(255)
tinytext最多 255 字节的文本tinytext
text最多 65,535 字节的文本text
mediumtext最多 16,777,215 字节的文本mediumtext
longtext最多 4,294,967,295 字节的文本longtext
binary固定长度的二进制数据binary(10)
varbinary可变长度的二进制数据varbinary(255)
tinyblob最多 255 字节的二进制大对象tinyblob
blob最多 65,535 字节的二进制大对象blob
mediumblob最多 16,777,215 字节的二进制大对象mediumblob
longblob最多 4,294,967,295 字节的二进制大对象longblob
json类型json存储 json 格式的数据json

二、数值类型


tinyint为例

只有数据合法才允许插入,否则不给插入
保证了整体数据库的规范性
这个叫做约束,整个约束反过来倒逼程序员要正确的输入数据

1、bit类型

bit(M):位字段类型。M表示每个值的位数,范围从1-64,如果忽略不写,默认为1

如果是1位:范围是0-1
如果是2位:范围是0-3
如果是3位:范围是0-5
以此类推,其实就是二进制
超过位数的值不能被插入

示例:

create table table_name (
id bit(2)
);

2、float类型

float(m,d) [unsigned]

m:指定显示长度(超过显示长度,四舍五入)
d:小数位数
unsigned:将负数部分砍掉
小数点精度最大是7位

create table table_name (
id decimal(4,2)
);

例如:float(4,2)表示的范围是-99.99 - 99.99


3、decimal类型

decimal (m,d) [unsigned];

和float一样,但精度更高
float精度7位;decimal整数56位,小数30位

如果d被省略,默认为0;m被省略,默认为10

区别:对更小的数据,float可能会修改部分数据;但decimal不会,而保持原值

4、字符类型

(1)char

char(L):固定长度字符串,L是可以存储的长度,单位是字符,最大是255个字符
mysql中的字符,对应一个符号,而非字节,字符可是字母 / 汉字
‘ab’是两个字符;‘你好’是两个字符;‘45’也是两个字符

create table table_name(
name char(4)
);

(2)varchar

varchar(L):变长字符串,L表示长度,最大长度65535字节

utf标准3个1字节表示一个字符,因此65535/3=21845个字符
gbk标准2个字节表示一个字符
同时,在varchar中,会有一个1-3个字节记录字符串的长度
因此,其实utf标准下,最大长度其实是21844

create table table_name (
name varchar(32)
);

(3)varchar和char有甚区别?

varchar(L)中的L表示上限,
而char(L)中的L表示固定长度
举个例子:

varchar(6)
如果数据是 'a' ,数据长度为1
如果数据是 'ab',数据长度为2
如果数据为 'abc',数据长度为3
....
用多少,分配多少,但不能超过6

而char(6):
如果数据是 ‘a’,数据长度为6
如果数据是‘ab’,数据长度为6
...
即大小固定

(4)char varchar如何选择?

如果数据确定长度都一样,用char,例如身份证、学号、身高、体重
(应该没有人的身高突破4位数吧?比如1700cm?)
如果数据有变化,用varchar,例如路程、地址
定长的磁盘空间比较浪费,但是效率高
变长的磁盘空间比较节省,但是效率低

5、日期和时间类型

常用三种日期类型:date、datetime、timestamp

据类型存储大小描述
date3 字节存储日期,格式为 YYYY-MM-DD,范围:1000-01-01 到 9999-12-31
datetime8 字节存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS,范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59
timestamp4 字节存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS,范围:1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC
time3 字节存储时间,格式为 HH:MM:SS,范围:'-838:59:59' 到 '838:59:59'
year1 字节存储年份,格式为 YYYY,范围:1901 到 2155

 示例
创建一个时间类型表:

create table time_table(
d1 date,
d2 datetime,
d3 timestamp,
d4 time,
d5 year
);

插入时间:

insert into time_table(d1, d2, d3, d4, d5) values(
'2024-10-14','2024-10-14 15:30:00',current_timestamp, 
'12:30:00', 2024
);

6、Enum 和 set类型

特性enumset
定义用于存储单一值,值从预定义的字符串集合中选择一个用于存储多个值,值从预定义的字符串集合中选择多个
语法enum('value1', 'value2', ...)set('value1', 'value2', ...)
值的数量只能有一个值,最大值为 65535可以有多个值,最大值为 64
存储占用一个或两个字节占用一个或多个字节,具体取决于存储的值的数量
使用场景适合用于选择单一选项,如性别、状态等适合用于选择多个选项,如兴趣、标签等
空值可以设置为空值可以设置为空值
排序根据定义的顺序排序按位排序
限制不允许重复值允许重复值

enum:枚举。“单选”类型
enum(选项1,‘选项2’,‘选项3’...);
给多个选项,但只能选一个,单选

set:集合,“多选”类型;
set(’选项1','选项2','选项3'....);
给多个选项,可选多个选项,多选
上述两个类型:只能插入所给的选项

比特位存储
数据类型定义例子存储值比特位
ENUMENUM('small', 'medium', 'large')'small' 存储为 101
'medium' 存储为 210
'large' 存储为 311
SETSET('music', 'sports', 'reading', 'traveling')'music,sports' 存储为 30000 0011
'reading' 存储为 80000 1000

set:二进制倒序,按顺序一个比特位对应一个选项

insert into table_name values set_name (n);#

对n:

0 = 0000,空串

1 = 0001,选择第一个

2 = 0010,选择第二个

3 = 0011,选择第一、第二个

7 = 0111,选择第一、第二、第三个

示例:

1、建立示例表

create table set_table(
id int,
sports set('唱','跳','rap')
);

2、插入数据看现象

​
insert into set_table values (1, 1);​#1=01,对应第一个选项

​
insert into set_table values (2, 2);​#2=01,对应第二个选项

insert into set_table values (3, 3);
#3=011,对应第一、第二选项​

insert into set_table values (7,7);
#7=0111,对应前三个选项

enum:索引从1开始,从左到右,不是二进制

insert into enum_table valuse (n);

对n值:

n=0,空串

n=1,选择第一个

n=2,选择第二个

n=3,选择第三个

  • 每个 ENUM 值都有一个从 1 开始的索引。例如,如果定义 ENUM('small', 'medium', 'large'),那么 small 的索引为 1,medium 为 2,large 为 3。

7、Enum 和 set类型查找

查找某一个条件:严格匹配

select * from table_name where filed_name='xxx...';

find_in_set(xxx,filed_name)函数

查找所有匹配的条件:

select * from table_name where find_in_set('xxx',filed_name);

查找多个条件组合:

select * from table_name where find_in_set('xxx',filed_name) and find_in_set('yyy',filed_name) ;

也可以使用数字匹配:
select * from table_name where filed_name=num;
对应的是比特位图形式

相关文章:

mysql--数据类型

目录 搞定所有数据类型 一、常见数据类型分类 二、数值类型 1、bit类型 2、float类型 ​编辑3、decimal类型 4、字符类型 (1)char (2)varchar (3)varchar和char有甚区别? &#xff0…...

代码随想录第40天|

#include <bits/stdc.h> using namespace std;vector<list<int>> graph; // 删除局部 graph&#xff0c;使用全局 graph vector<vector<int>> res; vector<int> path; int N, M;void dfs(int index) {if (index N) {res.push_back(path);…...

Turn-it:优化线材重构雕塑制造

&#x1f428;文章摘要abstract 电线雕塑在工业应用和日常生活中都很重要。 本文提出了一种新的制造策略&#xff0c;通过调整目标形状以适应电线弯曲机&#xff0c;然后由人工将其弯曲回目标形状。&#xff08;机器弯曲人工弯曲&#xff09; 该方法通过两阶段弯曲策略实现&a…...

微深节能 堆取料机动作综合检测系统 格雷母线

微深节能的堆取料机动作综合检测系统结合了格雷母线定位系统&#xff0c;是工业自动化领域的一项重要创新。该系统通过集成多种传感器和控制设备&#xff0c;实现对堆取料机的全面监控和精确控制&#xff0c;包括位置、速度、力度、振动以及工作状态等。格雷母线定位系统作为一…...

【JAVA面试题】什么是Springboot的自动配置以及注意事项

文章目录 强烈推荐核心概念&#xff1a;自动配置的关键特点&#xff1a;示例&#xff1a; 需要注意的点1.默认配置可能不适合所有场景2.Bean 冲突与覆盖3.应用启动慢的问题4.过度依赖自动配置5.安全性问题6.依赖冲突与版本兼容7.过多不必要的自动配置8.调试困难 专栏集锦 强烈推…...

华为鸿蒙开发笔记

记在前面 官方文档链接 因无法直接使用chatgpt进行编程(悲,2024/10),故记录笔记,方便查阅,基于arkts语言 DevEco 中文 deveco是默认有中文包的,所以在市场里面搜不错,而应该在已安装里面搜索,然后启用就行了 测试 对ts进行单独测试 打开entry/src/test/LocalUnit.test.…...

Go语言Gin框架的常规配置和查询数据返回json示例

文章目录 路由文件分组查询数据库并返回jsonservice层controller路由运行效果 启动多个服务 在 上一篇文章《使用Go语言的gorm框架查询数据库并分页导出到Excel实例》 中主要给大家分享了较多数据的时候如何使用go分页导出多个Excel文件并合并的实现方案&#xff0c;这一篇文章…...

JavaEE----多线程(二)

文章目录 1.进程的状态2.线程的安全引入3.线程安全的问题产生原因4.synchronized关键字的引入4.1修饰代码块4.2修饰实例方法4.3修饰静态方法4.4对象头介绍4.5死锁-可重入的特性 5.关于死锁的分析总结5.1死锁的分析5.2死锁成因的必要条件5.3死锁的解决方案 1.进程的状态 public…...

【K8S】快速入门Kubernetes

之前企业都是使用容器化和来构建自己的服务和应用程序&#xff0c;其中容器化优点有很多&#xff1a;提升了部署效率、稳定性、提高了资源的利用率降低了成本。 但是也带来了一些新的问题&#xff1a;容器的数量变得很多&#xff0c;管理就是一个新的问题。所以Kubernetes就出…...

如何在 MySQL 中处理大量的 DELETE 操作??

全文目录&#xff1a; 开篇语前言摘要简介概述DELETE 操作的基本概念常用的 DELETE 方法 核心源码解读简单 DELETE 语句批量 DELETE 示例 案例分析案例1&#xff1a;使用简单 DELETE 删除用户数据案例2&#xff1a;使用分批 DELETE 应用场景演示场景1&#xff1a;用户管理系统场…...

LabVIEW中句柄与引用

在LabVIEW中&#xff0c;句柄&#xff08;Handle&#xff09; 是一种用于引用特定资源或对象的标识符。它类似于指针&#xff0c;允许程序在内存中管理和操作复杂的资源&#xff0c;而不需要直接访问资源本身。句柄用于管理动态分配的资源&#xff0c;如队列、文件、网络连接、…...

【三十四】【QT开发应用】音量图标以及滑动条,没有代码补全的小技巧

效果展示 鼠标位于音量图标区域内&#xff0c;显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。鼠标点击音量图标&#xff0c;如果此时音量为0&#xff0c;音量变成50&#xff0c;如果此时音量不为零&#xff0c;音量变为0。 CVolumeButton.h 音量图标头文件 #pragma once …...

Android修改第三方应用相机方向

以下修改基于Android7.1 diff --git a/frameworks/base/core/java/android/hardware/Camera.java b/frameworks/base/core/java/android/hardware/Camera.java index 8c7434b..7201481 100755 --- a/frameworks/base/core/java/android/hardware/Camera.java b/frameworks/ba…...

Python 读取文件汇总

readline和readlines的区别 使用 open()读取文件时&#xff0c;readline是读取文件的一行&#xff1b;而readlines是加载全部文档&#xff0c;以list形式保存每一行内容。 使用with避免资源泄露 with语句不仅限于open()函数&#xff0c;任何实现了上下文管理协议的对象都可以…...

云原生:一张图了解devops 中CI/CD

一个典型的云原生应用的开发和部署过程&#xff0c;其中涉及到的主要工具有 Git、Docker、Jenkins/CircleCI、Ansible、Kubernetes 等。以下是每个步骤的简要说明&#xff1a; 开发人员&#xff08;Developers&#xff09;使用 Git 进行版本控制&#xff0c;他们将代码推送到 G…...

无人机之自组网通信技术篇

无人机的自组网通信技术是一种利用无人机作为节点&#xff0c;通过无线通信技术实现节点间自主组网、动态路由和数据传输的技术。 一、技术原理与特点 技术原理&#xff1a;无人机自组网技术基于自组织网络&#xff08;Ad-Hoc Network&#xff09;的原理&#xff0c;通过无线…...

【WebLogic】Oracle发布2024年第四季度中间件安全公告

Oracle于美国时间2024年10月15日发布了 WebLogic 12c&#xff08;12.2.1.4.0&#xff09;和14c&#xff08;14.1.1.0.0&#xff09;两个大版本2024年第4季度的安全公告&#xff0c;涉及漏洞ID共计 6 个&#xff0c;包含2个高危漏洞 2 个&#xff0c;4个中危漏洞&#xff0c;其中…...

Java集合(3:Set和Map)

文章目录 Set概述哈希值HashSet去重原理LinkedHashSetTreeSet自定义排序规则 Map概述Map的基本方法Map集合的获取功能哈希表HashMap底层源码 特点注意 Set 概述 Set集合也是一个接口&#xff0c;继承自Collection&#xff0c;与List类似&#xff0c;都需要通过实现类来进行操…...

【Golang】Gin框架中如何定义路由

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

CPU内存飙升

CPU 飙升介绍 CPU 飙升是指中央处理器&#xff08;CPU&#xff09;的使用率在短时间内急剧上升&#xff0c;达到一个较高的水平。正常情况下&#xff0c;CPU 会根据系统和应用程序的需求合理分配资源&#xff0c;使用率会在一定范围内波动。但当 CPU 飙升时&#xff0c;可能会导…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...