MySQL——3、数据类型
数据类型
- 1、数据类型分类
- 2、数值类型
- 2.1、tinyint类型
- 2.2、bit类型
- 2.3、小数类型
- 2.3.1、float
- 2.3.2、decimal
- 3、字符串类型
- 3.1、char
- 3.2、varchar
- 3.3、char和varchar比较
- 3.4、日期和时间类型
- 3.5、enum和set
1、数据类型分类
2、数值类型
2.1、tinyint类型
首先创建t1表,只有列属性num,类型为tinyint类型:
创建成功后我们可以通过以下三种方式查看表信息:
1、查看当前数据库存在哪些表:show tables;
2、查看表结构:desc t1;
3、查看创建表的信息:show create table t1 \G
接着我们向该表插入一些值:
由于tinyint的取值范围为-128~127,所以上面插入都是成功的。
下面试试插入范围之外的值:
在创建表的时候,指明tinyint类型,后面还可以跟上unsigned表示无符号类型。下面我们创建表t2,只有一个num列的无符号tinyint类型:
接着我们试着插入一些数据:
此时无符号的unsigned tinyint类型取值范围是0~255,我们插入范围内的值是可以插入成功的,当我们插入范围之外的值,MySQL会直接拦截我们。至于其他的类型,如small int、medium int、int、bigint可自行测试。
在C/C++中,我们赋值一个大整数给char类型的数据,一般情况下不会报错,会自动发生截断。而在MySQL中,如果我们向MySQL特定的类型插入不合法的数据,MySQL一般都是直接拦截我们,不让我们做对应的操作!反过来,如果我们已经有数据被成功插入到MySQL中了,那么插入的数据一定是合法的。
所以MySQL中,数据类型本身也是一种约束。——倒逼程序员,让程序员尽可能进行正确的插入。约束约束的是使用者。如果你不是一个很好的使用者,MySQL也能保证插入数据的合法性。
通过这种方式,就可以保证数据库中的数据是可预期的,完整的。
2.2、bit类型
使用样例:
表t3中的online用来表示用户是否在线,由于只有一个比特位,所以只能表示0/1,其中0表示不在线,1表示在线。我们插入数据,发现只能online这一列的时候,只能插入0/1,超出的数值是无法插入的。
另外我们查看一下插入的数据:
我们发现online这一列默认显示的是十六进制数,如果我们要转换成十六进制可以这样:
下面我们修改online这一列的属性,插入一些更大的数值看看:
另外,bit类型的位数是1~64,如果超出64位创建表的时候就会失败,如果不写位数默认就是1位。如下图:
2.3、小数类型
2.3.1、float
使用样例:
salary的取值范围在-99.99~99.99,所以其他数值是无法插入的。
插入的数据如果有多个小数,会进行四舍五入。当时需要注意四舍五入后也需要在取值范围内,假设插入数据为99.995,四舍五入后就是100.00,这样也是无法插入的。
下面我们再看看使用无符号float类型的样例:
float这里无符号类型很简单粗暴,直接将负数部分砍掉。
下面修改salary属性,改为默认的float类型,然后插入数据:
我们不指定位数和精度,默认也是只保留两位小数的,但是我们可以看到插入数据的时候,连整数精度都会丢失。
2.3.2、decimal
首先来对比float和decimal的精度:
我们发现float是有精度丢失的,而decimal精度更高
3、字符串类型
3.1、char
使用样例:
如图,大于两个字符就无法插入了。接着我们再验证一下汉字:
对于中文汉字也是如此。这里字符串char类型是以字符为单位的,不管是数字、字母、汉字,一个都算一个字符。另外,utf8mb3编码中,一个中文汉字一般是占3个字节,两个字符中文汉字那就是6个字节,而在gbk编码中,一个中文汉字则占2字节。
3.2、varchar
使用样例:
由于我们设定的长度为6,所以超过6个字符就无法插入了。另外,我们注意到上面最大长度为65535个字节,那么在utf8mb3编码下,我们需要让65535/3=21845个字符。
实际上,varchar还需要1~3个字节来记录数据的长度,假设长度拉满,那么实际上存储的字节数就是65532。如果是在utf8mb3中,就需要/3。如果是在gbk中,就需要/2。
在上图中,我们修改了字符长度为21845,由于还需要保存数据长度,所以肯定不行。但是为什么修改长度为21844也不行呢?这是因为MySQL中一行最大长度为65535个字节,我们前面还有一个int类型的数据,所以实际上最大也只能是21842个字符。
如果我们另外创建一个表,单独存放一个变长字符串,那么就可以达到21844个字符,这时候没有其他属性影响,那么该属性可以独占一行最大长度65535个字节。
3.3、char和varchar比较
3.4、日期和时间类型
使用样例:
timestamp在MySQL比较老的版本中,当我们进行插入或者修改的时候是会自动进行更新的。但是这里我使用的MySQL8.0,所以不会自动更新了,需要我们再创建表的时候设置,如下:
MySQL较新的版本需要我们手动显示定义。现在当我们插入一行或者修改属性的时候,第三个字段timestamp就会自动更新:
timestamp可以应用在用户发表评论的时候,当用户发表了,插入评论信息到数据库中,自动设置时间戳。当用户修改评论的时候,对应数据库的时间戳也会自动修改。datetime就是用来存储固定的时间的。
3.5、enum和set
使用样例:
gender性别不能插入除男和女以外的值,当然也可以采用常量的下标1/2,从下标1开始,下标也不能超出范围。
插入集合的时候,也是不能出现除集合意外的值。可以插入多个选项,中间用逗号分隔开。
另外,我们发现enum和set默认是可以为空的,所以在插入表t13的时候,我们可以只插入username,剩下的gender和hobby默认为空。
接着我们给hobby插入了一个0和一个1,我们发现插入0的这一行hobby为空。这就需要对比NULL和’'了,NULL表示为空,而这里则表示空串。空串和NULL是不一样的。插入1则表示的是代码。
下面我们插入2,那么对应的应该就是羽毛球了:
那如果我插入3呢?是乒乓球吗?
并不是,这里是代码和羽毛球。因为代码是用第一个比特位来表示的,羽毛球是用第二个比特位来表示的。插入3,3的二进制表示为11,所以插入了代码和羽毛球。所以乒乓球应该是第三个比特位来表示的,如果我们想单独插入一个乒乓球用数字的方式,那么就应该插入4。
hobby总共有五个选项,每个选项对应第一个比特位到第五个比特位,如果我想插入所有的选项呢?那就是2^5-1=31。下面我们插入31看看:
enum和set的查询:
enum查询我们可以使用枚举常量,也可以使用下标来查询。
我们在查询set的时候,这里的查询条件是严格匹配的,显示的是只有爱好为羽毛球/代码+羽毛球的人员信息。但是我们还期望的是筛选出爱好包含羽毛球的所有人员信息,就需要使用find_in_set函数。
那如果我们要找爱好中包含羽毛球和代码的呢?我们上面测试在abc中查找ab返回是0。
实际上我们where子句可以跟and,把多种结果级联起来。关于where子句我们后面会做介绍。
相关文章:
MySQL——3、数据类型
数据类型 1、数据类型分类2、数值类型2.1、tinyint类型2.2、bit类型2.3、小数类型2.3.1、float2.3.2、decimal 3、字符串类型3.1、char3.2、varchar3.3、char和varchar比较3.4、日期和时间类型3.5、enum和set 1、数据类型分类 2、数值类型 2.1、tinyint类型 首先创建t1表&…...
Flutter - 集成三方库:日志(logger)
日志 使用print方法时,会提示 添加依赖 $ flutter pub add logger下载依赖 $ flutter pub get使用 打印 import package:logger/logger.dart;var logger Logger(); logger.d("debug"); logger.e("error"); logger.i("info"); logger.f(&qu…...
第五部分:第五节 - Express 路由与中间件进阶:厨房的分工与异常处理
随着你的 Express 应用变得越来越大,所有的路由和中间件都写在一个文件里会变得难以管理。这时候就需要将代码进行拆分和组织。此外,一个健壮的后端应用必须能够优雅地处理错误和一些常见的 Web 开发问题,比如跨域。 路由模块化 (express.Ro…...
国标GB/T 12536-90滑行试验全解析:纯电动轻卡行驶阻力模型参数精准标定
摘要 本文以国标GB/T 12536-90为核心框架,深度解析纯电动轻卡滑行试验的完整流程与数据建模方法,提供: 法规级试验规范:从环境要求到数据采集全流程详解行驶阻力模型精准标定:最小二乘法求解 ( FAv^2BvC ) 的MATLAB实…...
组件导航 (Navigation)+flutter项目搭建-混合开发+分栏
组件导航 (Navigation)flutter项目搭建 接上一章flutter项目的环境变量配置并运行flutter 上一章面熟了搭建flutter并用编辑器运行了ohos项目,这章主要是对项目的工程化改造 先创建flutter项目,再配置Navigation 1.在开发视图的resources/base/profi…...
物联网中的WiFi模式解析:AP、STA与混合模式
物联网现在还是比较火的,各种设备都要联网,那么WiFi已成为设备联网的“标配”。但你是否想过,为什么有的设备能自己创建WiFi热点,有的只能连接路由器?为什么有些网关既能收数据又能传数据? 主要还是因为Wi…...
spring cloud gateway 源码解析
参考:Spring Cloud Gateway SpringCloud gateway源码走读(顺带聊聊响应式) - 掘金 1,原理图 还是从starter 开始看 要实现网关的核心概念, 肯定是需要接受请求的server ,从上面的截图看 starter-gateway 只负责了包的依赖,并没有定义自动配置 , 他依赖了starter-webf…...
游戏引擎学习第286天:开始解耦实体行为
回顾并为今天的内容定下基调 我们目前正在进入实体系统的一个新阶段,之前我们已经让实体的移动系统变得更加灵活,现在我们想把这个思路继续延伸到实体系统的更深层次。今天的重点,是重新审视我们处理实体类型(entity type&#x…...
【论文阅读】KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS
KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS Scaling的解释: 通过系统性的方法扩展强化学习算法的能力,使其能够处理更复杂的问题、更大的状态/动作空间、更长的训练周期或更高效的资源利用 原文摘要: 研究背景与问题定位 传统预训…...
大语言模型与多模态模型比较
一、核心差异:输入数据类型与模态融合 输入数据类型 LLM:仅处理文本数据,例如文本分类、机器翻译、问答等任务,通过大规模语料库学习语言规律。 LMM:支持文本、图像、音频、视频等多种模态输入,例如根据图…...
vscode debug node + 前端
方法 2:调试全栈(Node 前端) 如果需同时调试后端和前端: 分别启动两个调试会话 一个配置调试 Node.js 后端(server.js)。 另一个配置调试浏览器前端(如上)。 {// Use IntelliS…...
RK3568-鸿蒙5.1与原生固件-扇区对比分析
编译生成的固件目录地址 ../openharmony/out/rk3568/packages/phone/images鸿蒙OS RK3568固件分析 通过查看提供的信息,分析RK3568开发板固件的各个组件及其用途: 主要固件组件 根据终端输出的文件列表,RK3568固件包含以下关键组件&#x…...
Java线程池(Thread Pool)性能优化解析
在高性能、高并发的Java应用开发中,线程池(Thread Pool)是不可或缺的组件。它通过复用线程,避免了线程频繁创建和销毁带来的资源开销,提高了系统的响应速度和稳定性。然而,不合理的线程池配置和使用方式也可能成为系统性能瓶颈的根源。 本文旨在深入解析Java线程池的性能…...
AI重塑未来学者:研究生教育的“进化论”与“数字化生存指南
目录: 一、引言:AI浪潮下的“象牙塔”新挑战与新机遇 二、AI的“双刃剑”:深度剖析对研究生教育的颠覆性影响 1. 研究范式的革新:从“人工”到“智能” 2. 知识获取与传授方式的重塑 3. 创新能力与批判性思维的再定义 4. 伦理困境与学术诚信的新考验 三、他山之石:发达国家…...
IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别
IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别 IHttpHandler 与 TCP Listener 处理文件上传的核心区别 IHttpHandler 和 TcpListener 是ASP.NET中处理 HTTP 请求的两种不同抽象层级,它们在文件上传处理上存在以下关键区别: 1. 抽象层…...
C++ --- new与delete
new与delete 一、回顾1.malloc2.calloc3.realloc4.free 二、new与delete的特殊之处(1)(2) 三、new与delete的底层原理四、总结 一、回顾 在C语言阶段我们学习了动态内存管理:malloc,calloc,realloc,free。 1.malloc …...
Guided Filtering相关记录
一、背景介绍 以前折腾保边滤波时候,刷了一些Guided Filtering相关资料。这里主要是对它们做个算法效果复现和资料简单整理。 二、Guided Filtering 1、基本原理 原版Guided Filtering的提出,主要是为了改善双边滤波做保边平滑滤波器时候的梯度翻转伪影…...
Rust 学习笔记:关于 String 的练习题
Rust 学习笔记:关于 String 的练习题 Rust 学习笔记:关于 String 的练习题选出描述正确的那一个。该程序最多可能发生多少次堆的内存分配?哪种说法最能解释为什么 Rust 不允许字符串索引?哪种说法最能描述字符串切片 &str 和字…...
AG-UI 协议:重构多模态交互,开启智能应用新纪元
一、协议诞生的时代背景:填补 AI 生态最后一块拼图 在人工智能技术飞速发展的今天,AI 代理(Agent)作为能够主动执行复杂任务的智能实体,正从实验室走向生产环境,重塑各个行业的工作流程。然而,…...
网络世界的“百变身份“:动态IP让连接更自由
深夜的程序调试 凌晨两点,我盯着电脑屏幕上的报错信息:"Connection timed out"。这是本周第三次测试服务器响应时被拒绝访问了——只因为之前同一个IP地址尝试登录太过频繁。正在改代码的朋友小王凑过来看了眼:"老兄&…...
【学习笔记】因果推理导论第1课
因果推理导论第1课 为何要做因果推理 一、辛普森悖论一个例子 二、相关不代表因果性三、什么揭示因果四、观测研究五、结论 本节课通过 一、辛普森悖论 一个例子 书中举了一个疫情两种治疗方法A,B,分析哪一个治疗方法更好的例子. 首先已知B治疗方法更稀缺,因此观测数据样本上…...
Android 中 权限分类及申请方式
在 Android 中,权限被分为几个不同的类别,每个类别有不同的申请和管理方式。 一、 普通权限(Normal Permissions) 普通权限通常不会对用户隐私或设备安全造成太大风险。这些权限在应用安装时自动授予,无需用户在运行时手动授权。 android.permission.INTERNETandroid.pe…...
深度学习算法介绍
深度学习算法是一种基于人工神经网络结构的机器学习方法,其核心理念是通过多层次的神经元组成的神经网络来模拟人类大脑的工作原理。以下是几种常见的深度学习算法及其简要介绍: 多层感知器(Multilayer Perceptron, MLP)ÿ…...
Java【13_1】final、初始化块、继承(测试题)
测试题 1、简述final修饰符的功能 ① 修饰类 该类不能被继承 ② 修饰变量 该变量就是常量(一旦被初始化,就不可以修改) ③ 修饰方法 该方法不能被重写 2、写出程序结果 (仔细认真) public class MyClass { static int x,y; static{ …...
小结:JavaScript 模块化工具链
JavaScript 模块化工具链 是现代前端开发中用于组织、管理和优化模块化代码的核心工具集合。以下是关于 JS 模块化工具链的概述,包括关键工具、作用和常见工作流程:** **1. **模块化的背景 JavaScript 模块化是为了解决代码组织、依赖管理和作用域隔离…...
RabbitMQ ④-持久化 || 死信队列 || 延迟队列 || 事务
消息确认机制 简单介绍 RabbitMQ Broker 发送消息给消费者后,消费者处理该消息时可能会发生异常,导致消费失败。 如果 Broker 在发送消息后就直接删了,就会导致消息的丢失。 为了保证消息可靠到达消费者并且成功处理了该消息,…...
十一、Hive JOIN 连接查询
作者:IvanCodes 日期:2025年5月16日 专栏:Hive教程 在数据分析的江湖中,数据往往分散在不同的“门派”(表)之中。要洞察数据间的深层联系,就需要JOIN这把利器,将相关联的数据串联起来…...
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块? 解决方法: 一:查看urdf中joint type定义是不是revolute。 二:查看urdf关节限制是不是正确,如果是0到0则不正确。 <joint name"joint_…...
Gitee DevOps:中国企业数字化转型的“本土化加速器“
在数字化浪潮席卷全球的当下,DevOps已经从技术热词转变为企业的核心生产力工具。根据IDC最新报告,到2025年中国DevOps市场规模将达到15亿美元,年复合增长率高达25%。在这一快速增长的市场中,一个显著趋势正在显现:越来…...
RKNN开发环境搭建(ubuntu22.04)
以下情况在RV1106G3的平台上验证正常。 1、conda安装 1)conda --version//确认是否安装 2)创建一个安装目录,进行下一步 3)wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x…...
2025年上软考 考试时间+准考证打印全攻略
各位同学好呀!我是你们的老朋友大老李~之前咱们聊过软考报名和机考模拟系统的使用技巧。今天要和大家分享一下,最近好多同学私信的问题:"老李!准考证到底哪天能打印?""考试时间会不会有变动?…...
vllm量化05—FP8 W8A8
本系列基于Qwen2.5-7B,学习如何使用vllm量化,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。 测试环境为: OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是该系列第5篇——FP8 W8A8 一、量化 fro…...
OpenCV 图像透视变换详解
在计算机视觉领域,图像的视角问题常常会影响后续的分析与处理。例如,从倾斜角度拍摄的文档、带有畸变的场景图像等,都需要通过特定的方法进行矫正。OpenCV 作为计算机视觉领域的重要库,提供了强大的图像透视变换功能,能…...
Vue主题色切换实现方案(CSS 变量 + 类名切换)
定义主题变量 // styles/themes.scss :root {--primary-color: #314099;--secondary-color: #1E3968;--text-color: #2c44ce; }[data-theme"红系主题"] {--primary-color: #d74146;--secondary-color: #c20707;--text-color: #db3b3b; }在组件中使用变量 <templ…...
MySQL 高可用
目录 一、概述MySQL高可用 1. 什么是高可用性(High Availability, HA)? 2. MySQL 高可用常见方案 3. 高可用核心机制 4. 选型建议 注意事项 二、案例环境组成 MySQL 主主复制 keepalived HAProxy 的高可用负载均衡架构 三、案例架构…...
C#学习教程(附电子书资料)
概述 C#(读作"C Sharp")是一种由微软开发的现代编程语言,结合了C的高效性和Java的简洁性,专为.NET框架设计。以下是其核心特性和应用领域的详细介绍电子书资料:https://pan.quark.cn/s/6fe772420f95 一、语…...
MySQL性能优化
目录 一、索引优化 1、慢查询日志分析 2、EXPLAIN 执行计划分析 3、索引类型选择 4、索引使用原则 5、常见索引失效场景 二、SQL语句优化 1、避免低效操作符 2、减少数据扫描量 3、子查询优化 4、其他高频优化技巧 三、表设计优化 1、数据类型优化 四、架构设计优…...
Mendix 中的XPath 令牌(XPath Tokens)详解
在 Mendix 中,XPath 令牌(XPath Tokens) 是一种特殊的动态参数化查询技术,允许你在 XPath 表达式中使用变量或上下文相关的值,从而实现更灵活的查询逻辑。 1. 什么是 XPath 令牌? XPath 令牌是 Mendix 提…...
Feign异步模式丢失上下文问题
Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时,代码中使用了RequestContextHolder去获取上下文的数据,当我们执行原来可以执行的业务时发现报了空指针异常或数据为空,这是为什么呢? 原理解释 …...
保姆教程-----安装MySQL全过程
1.电脑从未安装过mysql的,先找到mysql官网:MySQL :: Download MySQL Community Server 然后下载完成后,找到文件,然后双击打开 2. 选择安装的产品和功能 依次点开“MySQL Servers”、“MySQL Servers”、“MySQL Servers 5.7”、…...
BUFDS_GTE2,IBUFDS,BUFG缓冲的区别
1、IBUFDS_GTE2 这是 Xilinx FPGA 中专门为 高速收发器(SerDes/GTX/GTH/GTY)参考时钟设计的差分输入缓冲器。 主要功能是将外部的差分时钟信号(如LVDS、LVPECL等)转换为FPGA内部的单端时钟信号,并保证信号的完整性和高…...
FPGA: XILINX Kintex 7系列器件的架构
本文将详细介绍Kintex-7系列FPGA器件的架构。以下内容将涵盖Kintex-7的核心架构特性、主要组成部分以及关键技术,尽量全面且结构化,同时用简洁的语言确保清晰易懂。 Kintex-7系列FPGA架构概述 Kintex-7是Xilinx 7系列FPGA中的中高端产品线,基…...
c/c++的opencv的图像预处理讲解
OpenCV 图像预处理核心技术详解 (C/C) 图像预处理是计算机视觉任务中至关重要的一步。原始图像往往受到噪声、光照不均、尺寸不一等多种因素的影响,直接用于后续分析(如特征提取、目标检测、机器学习模型训练等)可能会导致性能下降或结果不准…...
索恩格汽车SEG Automotive EDI 需求分析
SEG Automotive(索恩格汽车)是一家全球领先的汽车电气化系统供应商,专注于为传统内燃机和新能源车辆提供高效、可持续的动力解决方案。 EDI 在汽车行业的重要性 在汽车制造行业,高效的供应链是精益生产的核心。精益生产强调“按…...
【简单模拟实现list】
在C标准模板库(STL)中,list是一个非常强大的容器,它基于双向链表实现,支持高效的插入和删除操作。虽然我们可以直接使用STL中的list,但通过自己模拟实现一个list,可以更好地理解其背后的原理和数…...
深入解析ZAB协议:ZooKeeper的分布式一致性核心
引言 在分布式系统中,如何高效、可靠地实现多节点间的数据一致性是核心挑战之一。ZAB协议(ZooKeeper Atomic Broadcast)作为 ZooKeeper的核心算法,被广泛应用于分布式协调服务(如Kafka、HBase、Dubbo等)。…...
交叉熵损失函数,KL散度, Focal loss
交叉熵损失函数(Cross-Entropy Loss) 交叉熵损失函数,涉及两个概念,一个是损失函数,一个是交叉熵。 首先,对于损失函数。在机器学习中,损失函数就是用来衡量我们模型的预测结果与真实结果之间…...
k8s部署实战-springboot应用部署
在 Kubernetes 上部署 SpringBoot 应用实战指南 前言 本文将详细介绍如何将一个 SpringBoot 应用部署到 Kubernetes 集群中,包括制作镜像、编写部署文件、创建服务等完整步骤。 准备工作 1. 示例 SpringBoot 应用 假设我们有一个简单的 SpringBoot 应用,提供 REST API 服…...
快速选择算法:优化大数据中的 Top-K 问题
在处理海量数据时,经常会遇到这样的需求:找出数据中最大的前 K 个数,而不必对整个数据集进行排序。这种场景下,快速选择算法(Quickselect)就成了一个非常高效的解决方案。本文将通过一个 C 实现的快速选择算…...
uniapp-商城-60-后台 新增商品(属性的选中和页面显示)
前面添加了属性,添加属性的子级项目。也分析了如何回显,但是在添加新的商品的时,我们也同样需要进行选择,还要能正常的显示在界面上。下面对页面的显示进行分析。 1、界面情况回顾 属性显示其实是个一嵌套的数据显示。 2、选中的…...