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? 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频,上传单个视频可能涉及到转码,…...
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…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...

向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...