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

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? 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频,上传单个视频可能涉及到转码&#xff0c…...

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…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

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

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...