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

【MySQL】常用数据类型

目录

数据类型

数据类型分类

数值类型

tinyint类型

bit类型

小数类型

float

decimal

字符串类型

char

varchar

日期和时间类型

enum和set


数据类型

数据类型分类

数值类型


tinyint类型

tinyint类型只占用一个字节类似于编程语言中的字符char。有带符号和无符号两种细分,无符号的范围为0--255,带符号的范围为-128--127;

越界测试:

创建一个只包含tinyint的表,进行数据的插入;

create table tt1(num tinyint);

说明:

  • 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
  • 可以通过UNSIGNED来说明某个字段是无符号的
  • 无符号案例

其他类型自己推导

注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。


bit类型

语法:

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

示例:

我们发现很怪异的现象,a的数据10没有出现;

bit使用的注意事项:

  • bit字段在显示时,是按照ASCII码对应的值显示。
  • 如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。

将a按照十六进制打印,即可看到对应的数字


小数类型

float

语法:

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

 示例:

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。


decimal

语法:

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
  • decimal(5,2) 表示的范围是 -999.99 ~ 999.99
  • decimal(5,2) unsigned 表示的范围 0 ~ 999.99
  • decimal和float很像,但是有区别:float和decimal表示的精度不一样

发现decimal的精度更准确,因此如果我们希望某个数据表示高精度,选择decimal类型;

说明:float表示的精度大约是7位。

  • decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。

字符串类型

char

语法:

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

示例:

说明:char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255;


varchar

语法:

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

示例:

说明:

关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:

  • varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
  • 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。

char和varchar比较

如何选择定长或者变长字符串呢?

  • 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
  • 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
  • 定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。
  • 定长的意义是,直接开辟好对应的空间
  • 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

日期和时间类型

常用的日期有如下三个:

  • date :日期 'yyyy-mm-dd' ,占用三字节
  • datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
  • timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节

示例:

我们插入两种不同的日期,最后一个时间戳日期会被补齐;当我们对表中的数据进行更新时表中最后一个时间戳也会随着我们对表的操作进行修改;


enum和set

语法:

  • enum:枚举,“单选”类型;
  • enum('选项1','选项2','选项3',...);

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多65535个;当我们添加枚举值时,也可以添加对应的数字编号。

  • set:集合,“多选”类型;
  • set('选项值1','选项值2','选项值3', ...);

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,....最多64个。

说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

示例:

有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选];

创建表

插入数据并查询性列出别为女

当我们插入多组数据进行查询的时候,我们会发现一个问题;我们想要查找包含登山爱好的人时,只能查到只有登山爱好的人,并按照我们想要的要求查询到我们想要的内容;

集合查询使用find_ in_ set函数                                                                                   

find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0;str_list 用逗号分隔的字符串。

示例:

使用find_in_set函数重新进行查询

这样我们就可以查询到我们想要的结果了;


今天对MySQL中常用数据类型的分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法;个人主页还有很多精彩的内容。您三连的支持就是我前进的动力,感谢大家的支持!!! 

相关文章:

【MySQL】常用数据类型

目录 数据类型 数据类型分类 数值类型 tinyint类型 bit类型 小数类型 float decimal 字符串类型 char varchar 日期和时间类型 enum和set 数据类型 数据类型分类 数值类型 tinyint类型 tinyint类型只占用一个字节类似于编程语言中的字符char。有带符号和无符号两…...

创建第一个rust tauri项目

安装nodejs curl -sL https://deb.nodesource.com/setup_20.x | sudo bash node -vproxychains4 npm create tauri-applatest✔ Project name tauri-app ✔ Choose which language to use for your frontend TypeScript / JavaScript - (pnpm, yarn, npm, bun) ✔ Choose yo…...

【课程总结】day19(中):Transformer架构及注意力机制了解

前言 本章内容,我们将从注意力的基础概念入手,结合Transformer架构,由宏观理解其运行流程,然后逐步深入了解多头注意力、多头掩码注意力、融合注意力等概念及作用。 注意力机制(Attension) 背景 深度学…...

4.4 标准正交基和格拉姆-施密特正交化

本节的两个目标就是为什么和怎么做(why and how)。首先是知道为什么正交性很好:因为它们的点积为零; A T A A^TA ATA 是对角矩阵;在求 x ^ \boldsymbol{\hat x} x^ 和 p A x ^ \boldsymbol pA\boldsymbol{\hat x} pAx^ 时也会很简单。第二…...

spring事务的8种失效的场景,7种传播行为

Spring事务大部分都是通过AOP实现的,所以事务失效的场景大部分都是因为AOP失效,AOP基于动态代理实现的 1.方法没有被public修饰 原因:Spring会为方法创建代理、AOP添加事务通知前提条件是该方法时public的。 2.类没有被Spring容器所托管 …...

进程的虚拟内存地址(C++程序的内存分区)

严谨的说法: 一个C、C程序实际就是一个进程,那么C的内存分区,实际上就是一个进程的内存分区,这样的话就可以分为两个大模块,从上往下,也就是0地址一直往下,假如是x86的32位Linux系统&#xff0c…...

英特尔移除超线程与AMD多线程性能对比

#### 英特尔Lunar Lake架构取消超线程 在英特尔宣布Lunar Lake架构时,一个令人惊讶的消息是下一代轻薄优化架构将移除Hyper-Threading(超线程,简称SMT)。而AMD最新的Zen 5/Zen5C多线程基准测试结果显示,该特性依然为A…...

定期自动巡检,及时发现机房运维管理中的潜在问题

随着信息化技术的迅猛发展,机房作为企业数据处理与存储的核心场所,其运维管理的复杂性和挑战性也与日俱增。为确保机房设备的稳定运行和业务的连续性,运维团队必须定期进行全面的巡检。然而,传统的手工巡检方式不仅效率低下&#…...

八股文(一)

1. 为什么不使用本地缓存,而使用Redis? Redis相比于本地缓存(如JVM中的缓存)有以下几个显著优势: 高性能与低延迟:Redis是一个基于内存的数据库,其读写性能非常高,通常可以达到几万…...

灵茶八题 - 子数组 ^w^

灵茶八题 - 子数组 w 题目描述 给你一个长为 n n n 的数组 a a a,输出它的所有连续子数组的异或和的异或和。 例如 a [ 1 , 3 ] a[1,3] a[1,3] 有三个连续子数组 [ 1 ] , [ 3 ] , [ 1 , 3 ] [1],[3],[1,3] [1],[3],[1,3],异或和分别为 1 , 3 , …...

git clone private repo

Create personal access token Clone repo $ git clone https://<user_name>:<personal_access_tokens>github.com/<user_name>/<repo_name>.git...

vue3+ts+pinia+vant-项目搭建

1.pnpm介绍 npm和pnpm都是JavaScript的包管理工具&#xff0c;用于自动化安装、配置、更新和卸载npm包依赖。 pnpm节省了大量的磁盘空间并提高了安装速度&#xff1a;使用一个内容寻址的文件存储方式&#xff0c;如果多个项目使用相同的包版本&#xff0c;pnpm会存储单个副本…...

自动化测试概念篇

目录 一、自动化 1.1 自动化概念 1.2 自动化分类 1.3 自动化测试金字塔 二、web自动化测试 2.1 驱动 2.2 安装驱动管理 三、selenium 3.1 ⼀个简单的web自动化示例 3.2 selenium驱动浏览器的工作原理 一、自动化 1.1 自动化概念 在生活中&#xff1a; 自动洒水机&am…...

Mojo值的生命周期(Life of a value)详解

到目前为止,我们已经解释了 Mojo 如何允许您使用 Mojo 的所有权模型构建内存安全的高性能代码而无需手动管理内存。但是,Mojo 是为 系统编程而设计的,这通常需要对自定义数据类型进行手动内存管理。因此,Mojo 允许您根据需要执行此操作。需要明确的是,Mojo 没有引用计数器…...

java对接kimi详细说明,附完整项目

需求&#xff1a; 使用java封装kimi接口为http接口&#xff0c;并把调用kimi时的传参和返回数据&#xff0c;保存到mysql数据库中 自己记录一下&#xff0c;以做备忘。 具体步骤如下&#xff1a; 1.申请apiKey 访问&#xff1a;Moonshot AI - 开放平台使用手机号手机号验证…...

鸿蒙媒体开发【基于AVCodec能力的视频编解码】音频和视频

基于AVCodec能力的视频编解码 介绍 本实例基于AVCodec能力&#xff0c;提供基于视频编解码的视频播放和录制的功能。 视频播放的主要流程是将视频文件通过解封装->解码->送显/播放。视频录制的主要流程是相机采集->编码->封装成mp4文件。 播放支持的原子能力规…...

django集成pytest进行自动化单元测试实战

文章目录 一、引入pytest相关的包二、配置pytest1、将django的配置区分测试环境、开发环境和生产环境2、配置pytest 三、编写测试用例1、业务测试2、接口测试 四、进行测试 在Django项目中集成Pytest进行单元测试可以提高测试的灵活性和效率&#xff0c;相比于Django自带的测试…...

48天笔试训练错题——day40

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 发邮件 2. 最长上升子序列 选择题 1. DNS 劫持又称域名劫持&#xff0c;是指在劫持的网络范围内拦截域名解析的请求&#xff0c;分析请求的域名&#xff0c;把审查范围以外的请求放行&#xff0c;否则返回…...

LabVIEW在DCS中的优势

DCS&#xff08;Distributed Control System&#xff0c;分布式控制系统&#xff09;是一种用于工业过程控制的自动化系统。它将控制任务分散到多个控制单元中&#xff0c;通过网络连接和协调这些单元来实现对整个过程的监控和控制。DCS通常用于大型工业设施&#xff0c;如化工…...

英特尔:从硅谷创业到全球科技巨头

在科技行业&#xff0c;英特尔不仅是一个品牌&#xff0c;更是一种精神的象征。自1968年成立以来&#xff0c;英特尔经历了从初创企业到全球半导体产业领导者的华丽转变&#xff0c;其发展历程是科技创新与市场战略完美结合的典范。本文将深入探讨英特尔的发展历程&#xff0c;…...

生物计算与纳米技术:交汇前沿的科学领域

在当今科技迅猛发展的时代&#xff0c;生物计算和纳米技术作为前沿科技领域的两个重要方向&#xff0c;正在逐渐融合并带来深远的影响。生物计算涉及使用生物系统进行计算和数据存储&#xff0c;而纳米技术则关注制造极小尺度的电子器件和材料科学。本文将深入探讨这两个领域的…...

C#中栈和队列

在C#中&#xff0c;Stack和Queue是两种不同的集合类型&#xff0c;它们用于实现后进先出&#xff08;LIFO&#xff09;和先进先出&#xff08;FIFO&#xff09;的数据结构。 Stack&#xff08;堆栈&#xff09; Stack是一个后进先出的集合&#xff0c;这意味着最后一个添加到堆…...

技战法丨攻防演练防御——纵深、联动、诱捕(可搬运、可cv)

演习活动经过近几年的发展&#xff0c;攻击方的专业水平已大幅提高&#xff0c;逐渐呈现出隐秘化、APT化的趋势。其利用渗透技术对目标系统做深入探测&#xff0c;不断挖掘防守方网络系统的薄弱环节&#xff0c;这就要求防守方构建立体式纵深防护体系来抵御入侵。同时&#xff…...

1、 window平台opencv下载编译, 基于cmake和QT工具链

1. 环境准备&#xff0c;源码下载 1.1 前置环境 qt 下载安装cmake 安装&#xff0c;可参考&#xff1a; https://blog.csdn.net/qq_51355375/article/details/139186681 1.2 opencv 源码下载 官网地址&#xff1a; https://opencv.org/releases/ 下载源码&#xff1a; 2 …...

C++20三向比较运算符详解

三向比较运算符可以用于确定两个值的大小顺序&#xff0c;也被称为太空飞船操作符。使用单个表达式&#xff0c;它可以告诉一个值是否等于&#xff0c;小于或大于另一个值。 它返回的是类枚举&#xff08;enumeration-like&#xff09;类型&#xff0c;定义在 <compare> …...

监听机制与耗电量

一、监听机制与耗电量的关系 监听机制通常涉及对特定事件、状态或数据的持续监测。在移动设备和嵌入式系统中&#xff0c;这种监听可能由多种组件和传感器实现&#xff0c;如GPS、传感器&#xff08;如加速度计、陀螺仪&#xff09;、网络连接等。监听的频率越高&#xff0c;意…...

C++ //练习 16.29 修改你的Blob类,用你自己的shared_ptr代替标准库中的版本。

C Primer&#xff08;第5版&#xff09; 练习 16.29 练习 16.29 修改你的Blob类&#xff0c;用你自己的shared_ptr代替标准库中的版本。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 template <typename> class BlobP…...

【Mode Management】CanNm处于PBS状态下接收到一帧诊断报文DCM会响应吗

目录 前言 正文 1.CanNm从RSS状态切换到PBS状态行为分析 1.1.CanNm动作 1.2.ComM动作 1.3.DCM动作 1.4 小结 2.CanNM在PBS状态下收到一帧诊断报文行为分析 2.1.DCM动作1 2.2. ComM动作 2.3. DCM动作2 2.3. CanNm动作 2.4 问题 2.5 分析 3.总结 前言 我们知道EC…...

【C++】模版:范式编程、函数模板、类模板

目录 一.范式编程 二.函数模板 1.概念与格式 2.原理 3.实例化 4.匹配规则 三.类模板 一.范式编程 在写C函数重载的时候&#xff0c;可能会写很多同一类的函数&#xff0c;例如交换函数&#xff1a; void Swap(int& left, int& right) {int temp left;left r…...

验证图片旋转

最近在使用百度图片翻译时遇到一个问题&#xff0c;就是图片会翻转90&#xff0c;经与百度沟通&#xff0c;发现是原始图片中有个旋转参数引起的。 于是写个demo验证一下。 // 获取元数据中的旋转方向 func getOrientation() int {//打开图像文件f, err : os.Open("image…...

wordpress 什么是插件吗/新产品推广方案策划

教学平台详细设计1、 用户名与密码&#xff1a;Q:教师登录的用户名与密码保存在哪里&#xff1f;验证过程是什么样的&#xff1f;A: 存放在PC服务器的MYSQL数据库中&#xff0c;有一张教师表&#xff0c;保存了教师的登录名、真实姓名、密码等信息&#xff0c;并提供…...

创建简易个人网站/今日头条新闻大事件

2001年大学刚毕业的第一年&#xff0c;曾经来北京培训网络技术&#xff0c;当时钱不多&#xff0c;为了省钱没吃全聚德烤鸭&#xff0c;因为吃一顿几百元就没了&#xff0c;能省就省原则吧&#xff0c;虽然心里是很想尝尝到底啥味道。大概在2006年左右&#xff0c;跟女朋友谈恋…...

wordpress直接密码注册/农大南路网络营销推广优化

问题发生&#xff1a; Java从网络批量读取图片并保存至本网站服务器后再插入文章中 今天转入一篇文章 http://news.qq.com/a/20170605/045860.htm 发现图片未能成功上传 查看源码发现&#xff1a; 因为没有文件类型所以在转存图片的时候出错了 谷歌百度了一下发现解决办法&…...

做视频网站需要什么样的配置/网站百度收录查询

Java 数组 Java 语言中提供的数组是用来存储固定大小的同类型元素的。 声明数组变量 欲使用数组&#xff0c;首先必须声明数组变量&#xff0c;用来存放数组对象。 dataType[] arrayRefVar; // 首选的方法 /* 或 */ dataType arrayRefVar[]; // 效果相同&#xff0c;但不…...

wallbase wordpress/网站客服系统

1 原因&#xff1a;缺失结果输出转换类型&#xff1b;原理很简单。 2 追源码 返回类型 如下都会失败 Data public class BaseHomeVO { } 或者 public class BaseHomeVO { } 或者 Data public class BaseHomeVO implements Serializable {private static final long serialVers…...

吉县网站建设/app推广注册赚钱

SpringBoot整合EasyExcelMyBatis-Plus实现Excel批量导入和导出一、前期配置1、依赖二、使用步骤1、Entity实体类2、Mapper层3、自定义AnalysisEventListener4、Controller层5、Util工具类三、数据与接口截图1、Excel2、数据库中信息3、批量导入接口4、批量导出Excel接口2022年8…...