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

《MySQL数据类型》

文章目录

  • 一、理解数据本身就是一种约束
    • 1.tinyint类型和 tinyint unsigned类型
    • 2.其他的int类型
  • 二、bit类型
  • 三、float类型
    • 1.signed版本
    • 注意
    • 2.unsigned版本
  • 四、decimal类型
  • float 和 decimal 总结
  • 五、char类型(固定长度)
  • 六、varchar类型(可变长度)
    • 总结
  • char和varchar比较
  • 七、日期和时间类型
  • 八、enum和set类型
    • enum
    • set
    • 总结
    • enum和set的类型查找


一、理解数据本身就是一种约束

1.tinyint类型和 tinyint unsigned类型

在这里插入图片描述
先创建表t1

create table if not exises t1(
num tinyint
);
表中只有一个字段tinyint
在这里插入图片描述

向num字段中添加数据:

insert into t1 values(-1);

在这里插入图片描述

然而,当我们插入256时:

在这里插入图片描述
出现了错误
意味着数据库不允许我们插入不合法数据。
反之,插入的一定是合法的数据!!!

所以一般而言,数据本身就是一种约束!!!

约束程序员,尽可能正确地插入数据。
就算你不是一个很好的程序员,Mysql也能保证数据的合法性。

2.其他的int类型

在这里插入图片描述

二、bit类型

创建一个表时,如下:
在这里插入图片描述
向表中插入一些数据后,如下:

在这里插入图片描述
问题是:为什么online字段没有任何显示呢?

只需执行如下命令就能显示了:

select id , hex(online) from t1;
(以十进制的方式显示)

在这里插入图片描述

同时也可以修改online字段的大小:

alter table t1 modify online bit(10);
在这里插入图片描述

三、float类型

1.signed版本

在这里插入图片描述
比如salary float(4,2);

表示允许承装的最多位数是4位(总长度,包含整数部分和小数部分),小数点后最多占两位。

那插入的salary(工资)最大就是:99.99

由于在建表时,salary类型没有设置成unsigned类型,所以可以插入负数,但实际生活中没有负数的工资吧。。。

注意

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

比如要插入一个数:

insert into t2(id ,salary) values(1,99,991);

是会插入成功的,因为在小数点部分,会进行四舍五入,将1舍去。
但是当插入下面的数据时,就不行:

insert into t2(id, slary) values(2,99.996);

因为一旦最后一个小数位进位后,数据就超出了-99.99~99.99的范围。

2.unsigned版本

如果把float设置成unsigned版本,那么取值范围就相当于把负数部分直接丢掉。

比如:定义一个表时,把float设置成float(4,2) unsigned

那取值范围就是:0~99.99

总结:1.一般情况下,默认的float,不指定位数的情况下,可容纳数据位数是比较大的,跟不同的平台设计也有关。
2.有一些情况,存储的浮点数类型比较大时,会出现精度丢失的问题。
在这里插入图片描述

四、decimal类型

该decimal类型,与float类型基本一样,区别在于decimal能更精确控制浮点数,确保不会丢失。

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

float 和 decimal 总结

说明:float表示的精度大约是7位。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,
默认是10。
建议:如果希望小数的精度高,推荐使用decimal。

五、char类型(固定长度)

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

比如:name char(2),表示放的最大长度的字符串是2;

注意:在MySQL中,一个汉字表示一个字符!
在这里插入图片描述

六、varchar类型(可变长度)

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

在修改varchar的最大类型的长度时,发现最大字符长度是 21845,
这个是字符的长度,由于采用utf8编码,一个字符3个字节。

21845*3 = 65535

在这里插入图片描述

总结

但是,当我修改到21845时,同样不可以。

原因是:varchar(6),表示的是字符的使用上限是6,而不是一次固定分配6个字符大小的空间。

当只使用1个字符的空间时,varchar实际上只会分配一个字符大小的空间。所以,就需要有1~3个字节位,来记录所使用的空间有多少。
而char类型不同,char类型是直接一次给指定的空间,不管用没用完,都给那么多。

说明:

  • 关于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比较

在这里插入图片描述

在这里插入图片描述

七、日期和时间类型

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

创建一个表,如下:

create table if not exists t7(
-> d date,
-> dt datetime,
-> ts timestamp
-> );

首先插入一个数据:
在这里插入图片描述
时间戳timestamp就是当前的最新时间。

然后,修改d,如下:
在这里插入图片描述
发现时间戳ts改变了,变成了最新的时间。

时间戳(timestamp)存在的意义:
实际生活中的社交软件,视频下面会有评论,当一个人发表评论时,会被所有人看到,并且附带发表评论时的时间。

过了几个月,当这个人修改它发表过的评论时,时间会自动更新成当前时间!
这就能让所有人知道,该评论何时被评论的,何时被修改的。

datetime存在的意义:
入职的时间,固定在那里,或者办理身份证的时间,固定在那个时间,什么日期,几时几分几秒,一般不会自动更新。

date存在的意义:
比如记录一个重要的人的生日,比如你自己的生日。

八、enum和set类型

enum

enum类型:枚举
在插入时,可以直接插入枚举类型定义的常量,也可以直接插入枚举常量的下标。(这里的下标从1开始)

比如:创建一个表如下:

create table if not exists t8(
-> name varchar(30),
-> gender enum(‘男’,‘女’),
-> hobby set(‘代码’,‘羽毛球’,‘乒乓球’,‘足球’,‘游泳’)
-> );

可以这样插入:

  • insert into t8 values(‘张飞’,‘男’,‘代码’);

还可以这样插入:

  • insert into t8 values(‘孙权’,1,‘代码’);

结果如下:1就代表枚举常量中的下标,在此1表示男,2表示女。
在这里插入图片描述

set

set的选择可以按照位图来。

以上面的表为例,

hobby set(‘代码’,‘羽毛球’,‘乒乓球’,‘足球’,‘游泳’)

一共有五个爱好,那么位图就有5个比特位,为1时表示选择该爱好。

所以可以这样插入数据:

  • insert into t8 values(‘孙权’,1,31);
    31的二进制就是:11111,就会让上面set位图的5个比特位全部置1。
    如果是这样插入:
    insert into t8 values(‘孙权’,1,7);
    7的二进制是:00111,代表将前3个比特位置1。
    而前三位就是set的从左到右开始计算的。
    所以爱好为:‘代码’,‘羽毛球’,‘乒乓球’。

总结

enum用数字来插入时,指代下标。
set用数字来插入时,指代位图,set的从左到右代表从小到大。

enum和set的类型查找

法1:

select * from votes where gender=1;
select * from votes where gender=‘男’;
上面两种写法等价。

根据特定的类型查找,比如按性别查找。

法2:
find_in_set 函数

select find_in_set(‘a’,‘a,b,c’);

  • 1.find_in_set 函数是查找一个元素是否在集合里面。
  • 2.判断一个元素是否在集合中,而不是判断是否严格相等。

所以,查找hobby是否有羽毛球时,是判断羽毛球是否在每一个用户中的。
在这里插入图片描述

相关文章:

《MySQL数据类型》

文章目录 一、理解数据本身就是一种约束1.tinyint类型和 tinyint unsigned类型2.其他的int类型 二、bit类型三、float类型1.signed版本注意2.unsigned版本 四、decimal类型float 和 decimal 总结五、char类型(固定长度)六、varchar类型(可变长…...

解决windows中的WSL Ubuntu子系统忘记root密码和用户密码问题

1、以管理员身份运行PowerShell 2、在powershell中执行wsl.exe --user root wsl.exe --user root如果出现了上面的报错,则需要运行步骤3、4,然后在执行步骤5改密码,如果没有出错,请直接跳到第5步改密码操作!&#xff…...

数据分析——业务指标分析

业务指标分析 前言一、业务指标分析的定义二、业务问题构建问题构建的要求 三、业务问题的识别在识别问题的阶段对于企业内部收益者的补充 四、竞争者分析竞争者分析的内容竞争者分析目的案例 五、市场机会识别好的市场机会必须满足的条件市场机会案例 六、风险控制数据分析师常…...

给c++小白的教程9:循环

老师给比纳瑞出了一道题。 给出 𝑛 和 𝑛 个整数 𝑎𝑖,求这 𝑛 个整数中最小值是什么。 由题意得,此题无论是顺序结构或是选择结构都连输入也解决不了。 这时候,我们就要用上循环…...

SLAIM:一个实时的RGB-D NeRF-SLAM系统

SLAIM:一个实时的RGB-D NeRF-SLAM系统与现有的NeRF-SLAM系统相比,我们的方法在跟踪性能上始终表现出更强的竞争力。我们的方法采用体积密度表示,并引入了一种新的KL正则化器在射线终止分布上,将场景几何限制为空隙空间和不透明表面…...

PWN入门之Stack Overflow

Stack Overflow是一种程序的运行时(runtime)错误,中文翻译过来叫做“栈溢出”。栈溢出原理是指程序向栈中的某个变量中写入的字节数超过了这个变量本身所申请的字节数,导致与其相邻的栈中的变量值被改变。 在本篇文章中&#xff…...

QT:label标签/进度条的使用

文章目录 设置不同格式的文本显示图片文本对齐/自动换行/缩进/边距LCDNumber倒计时 ProgressBar进度条 设置不同格式的文本 在文本格式中,存在富文本,makedown格式的文本,还有纯文本,下面就依据这三个进行举例 #include "w…...

网络初始化配置

IPADDR192.168.23.10 #新的ip地址,ip的网段要与nat模式下的网段一致 NETMASK255.255.255.0 #子网掩码 GATEWAY192.168.23.2 #网关 DNS1114.114.114.114 #域名解析:配置为国内114.114.114.114,国外8.8.8.8 ONBOOTtrue 启动时该网卡…...

在Ubuntu上搭建并通过systemctl管理Minecraft Java版服务器

本教程将详细介绍如何在Ubuntu操作系统上搭建一个Minecraft Java版服务器,并使用systemctl服务来管理服务器的启动、停止和重启。同时,我们还将探讨如何通过NGINX设置TCP/UDP转发,使得玩家能够通过域名方便地连接到你的Minecraft服务器。 准…...

【C++PCL】点云处理ESF描述符

作者:迅卓科技 简介:本人从事过多项点云项目,并且负责的项目均已得到好评! 公众号:迅卓科技,一个可以让您可以学习点云的好地方 重点:每个模块都有参数如何调试的讲解,即调试某个参数对结果的影响是什么,大家有问题可以评论哈,如果文章有错误的地方,欢迎来指出错误的…...

鸿蒙应用开发系列 篇二:鸿蒙系统开发工具与环境

文章目录 系列文章硬件与软件需求DevEco Studio扩展工具与框架开发资源系列文章 鸿蒙应用开发系列 篇一:鸿蒙系统概述 鸿蒙应用开发系列 篇二:鸿蒙系统开发工具与环境 (系列计划预告) 鸿蒙系统UI/UX设计 鸿蒙系统应用开发基础 鸿蒙系统高级开发技术 鸿蒙系统特色功能开发 …...

“A”分心得:我的云计算HCIE学习之路

大家好,我是誉天云计算HCIE周末班梁同学,在誉天老师和同学们的帮助下,我终于在4月24日顺利通过了云计算3.0 HCIE的认证考试,而且获得了A,这是让我特别惊喜的,功夫不负有心人。 我日常的工作是网络运维&…...

现代信号处理8_递归的最小二乘(CSDN_20240505)

递归的最小二乘大约出现在50年前。递归,就是在已经算出的结果的基础下,当新的数据到来时,不需要再对数据进行一次完整的运算,而是在已有结果的基础上做一些简单的调整,就能得到新的结果。使用递归的好处: …...

2024年全国保密宣传教育月的主题是()。A.贯彻落实保密法。你我都是护密人B.国家利益高于一切,保密责任重于泰山C.筑牢保密防线,维护国家安全

2024年全国保密宣传教育月的主题是()。点击查看答案 A.贯彻落实保密法。你我都是护密人B.国家利益高于一切,保密责任重于泰山 C.筑牢保密防线,维护国家安全D.共筑保密防线,公民人人有责 坚持不懈开展保密宣传教育,是保密工作实…...

一个通过照片识别地理位置的应用

一个通过照片识别地理位置的应用 引言 最近发现一个能根据照片进行地理位置判定的应用,在全球范围内能够非常准确地进行空间位置识别。我分3个尺度进行了测试,分别是城市街景(来源google和腾讯街景)、野外街景和我自己拍摄的照片…...

wordpress外贸独立站建站10要10不要

创建一个成功的WordPress外贸独立站需要注意很多因素。以下是zhanyes根据多年建站经验总结的wordpress外贸独立站建站的10个建议和10个避免的事项,以帮助您建立一个高质量的外贸网站: 10个要: 1. 要选择合适的域名:确保您的域名…...

搬运5款小众,无广告,实用性拉满的软件

​ 你是否喜欢一些小众且无广告的软件?如果是的话,我这边有一些给你推荐的。 1.屏幕录制——OBS Studio ​ OBS Studio是一款广泛使用的实时流媒体和屏幕录制软件,适用于Windows、MacOS、Linux平台。它采用C、C和Qt编写,提供高质…...

TCP重传,滑动窗口,流量控制,拥塞控制

TCP重传,滑动窗口,流量控制,拥塞控制 TCP重传机制: 超时重传快速重传SACKD-SACK 通过序列号与确认应答判断是否要重传 超时重传: 超过指定时间没有收到确认应答报文,就会重发该数据 触发超时重传的情况…...

云手机对出海企业有什么帮助?

近些年,越来越多的企业开始向海外拓展,意图发掘更广阔的市场。在这过程中,云手机作为一个新型工具为很多企业提供了助力,尤其在解决海外市场拓展过程中的诸多挑战方面发挥着作用。 首先,云手机的出现解决了企业在海外拓…...

Android Studio实现简单的自定义钟表

项目目录 一、项目概述二、开发环境三、详细设计3.1、尺寸设置3.2、绘制表盘和指针3.3、动态效果 四、运行演示五、总结展望六、源码获取 一、项目概述 在安卓开发中,当系统自带的View已经无法满足项目需求时,就要自定义View。在Android中是没有与钟表有…...

C语言 举例说明循环嵌套

今天 我们来说循环的嵌套 如果一个循环体内 又包含了另一个循环结构 我们称之为循环的嵌套 我们之前学的 While do-while for 都可以进行相互的嵌套 如下图 在 While 循环语句中再嵌套一个 While 循环语句 do-while 中嵌套 do-while for中嵌套 for 例如 我们做一个九九乘法…...

一、ESP32基础知识

1、乐鑫产品线 系列特点ESP8266无ESP32无ESP32-S2无ESP32-C3无ESP32-S3无ESP32-C2/ESP8684无ESP32-C6无ESP32-H2无 2、开发方式 2.1、ESP-IDF (1)面向专业开发者。乐鑫官方开发框架,专门为ESP32系列芯片设计。支持C/C语言,并提供一套完整的API&#…...

我希望未来10年,人工智能可以帮我解决这4件小事

生活在一线大城市的我,现在几乎整天被大数据、人工智能、机器学习、智慧生活的词汇环绕立体包围着,让我时刻感觉到,再过10年,我们五一假期真的可以摆脱现在擦肩接踵的旅游盛况了。但我其实要求倒是没这么高,我真心希望…...

使用jdbc方式操作ClickHouse

1、创建测试表,和插入测试数据 create table t_order01(id UInt32,sku_id String,total_amount Decimal(16,2),create_time Datetime ) engine MergeTreepartition by toYYYYMMDD(create_time)primary key (id)order by (id,sku_id);insert into t_order01 values …...

百面算法工程师 | 支持向量机——SVM

文章目录 15.1 SVM15.2 SVM原理15.3 SVM解决问题的类型15.4 核函数的作用以及特点15.5 核函数的表达式15.6 SVM为什么引入对偶问题15.7 SVM使用SGD及步骤15.8 为什么SVM对缺失数据敏感15.9 SVM怎么防止过拟合 欢迎大家订阅我的专栏一起学习共同进步 祝大家早日拿到offer&#x…...

关于YOLO8学习(一)环境搭建,官方检测模型部署到手机

一,环境的搭建 环境 win10 python 3.11 cmake pytorch pycharm 过程 首先安装好一个pycharm,这里就不一一叙述了。 其次,选择好一个python版本,是关键所在。有些YOLO的版本,并不支持很高的python版本,博主选用的是python3.11版本。经过实际的测试,这个版本比较合适。…...

3.10设计模式——Template Method 模版方法模式(行为型)

意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,Template Method 使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 结构 AbstractClass(抽象类)定义抽象的原语操作,具体的子类将重定…...

SQL 基础 | UNION 用法介绍

在SQL中,UNION操作符用于合并两个或多个SELECT语句的结果集,形成一个新的结果集。 使用UNION时,合并的结果集列数必须相同,并且列的数据类型也需要兼容。 默认情况下,UNION会去除重复的行,只保留唯一的行。…...

学习如何使用PyQt5实现notebook功能

百度搜索“pyqt5中notebook控件”,AI自动生成相应例子的代码。在 PyQt5 中,QTabWidget 类被用作 Notebook 控件。以下是一个简单的示例,展示如何创建一个带有两个标签的 Notebook 控件,并在每个标签中放置一些文本。 import sys f…...

Python氮氧甲烷乙烷乙烯丙烯气体和固体热力学模型计算

🎯要点 🎯固体和粒子:计算二态系统、简谐振子和爱因斯坦固体的内能和比热,比较爱因斯坦固体和德拜固体。模拟多个粒子的一维和二维随机游走,在数值上确认方差的线性趋势,模拟多个粒子的梯度下降&#xff0…...

大连企业网站建设定制/苏州整站优化

狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 !mysql学习【第6篇】:权限和数据库设计用户和权限管理/* 用户和权限管理 */ ------------------用户信息表:mysql.user-- 刷新权限flush privileges-- 增加用户…...

做美食有哪些网站/淘宝推广平台有哪些

我们可能会收到类似于这样的短信,发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实现长…...

古典棕色学校网站模板/自媒体怎么赚钱

网页设计前端页面制作的规范和注意事项一个排版规整的网页,是吸引客户的第一前提要素,下面是小编为大家整理关于网页设计前端页面制作的规范和注意事项,欢迎大家阅读!1.尽量把页面的背景图及小图标整合到一张图片,用CSS定位方法。…...

东莞市主营网站建设平台/semester什么意思

Yarn & Mapreduce 参数的具体含义和配置 http://zh.hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/...

南宁学网站建设/国内网络营销公司排名

目录 1、写txt文件 2、读txt文件 QT 读写txt文件 二进制文件的读写文件可以使用 QFile 类、QStream 文本文件的读写建议使用 QTextStream 类,它操作文件更加方便。 打开文件时,需要参数指定打开文件的模式: 模式值描述QIODevice::NotOpe…...

门户网站模板源代码/关键词分类工具

互联网行业是一个挺特别的行业,相对于国企,外企等,对学历的看法和要求并不完全一样。 知识星球和公众号的后台,经常有读者咨询学历相关的问题,我这里就些常见的问题,做个统一的解答。 以下的建议都是针对…...