当前位置: 首页 > 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;可能会导…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...