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

MySQL(数据类型)

目录

1. 数值类型

2. bit类型

3.小数类型

3. 字符串类型

4 日期和时间类型

5. enum和set


1. 数值类型

对标C语言:
tinyint->char(1字节):       有符号:127 ~ 255                             无符号:0 ~ -128。
smallint->shot int(2字节):有符号:32767 ~ 65535                     无符号:0 ~ -32768。
mediumint(3字节)              有符号:8388607 ~ 16777215           无符号:0 ~ -8388608。
int(4字节)                           有符号:2147483647 ~ 4294967295 无符号:0 ~ -2147483648。
bigint->long long(8字节)    有符号:9223372036854775807 ~ 18446744073709551615 无符号:0 ~ -9223372036854775808。
插入数值必须在指定的类型范围之类,否则插入失败。反之插入到MySQL中的数据一定是合法的,也就是一种约束(使用者)。
在语言中把一个超过该类型范围的值赋给该类型,可能会产生截断或者类型转换,在MySQL里直接拦截。
1. 下面用 tinyint 测试数值越界情况
MySQL 中,整型可以指定是有符号的和无符号的,默认是有符号的。
可以通过 UNSIGNED 来说明某个字段是无符号的
无符号案例:

2. bit类型

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

3.小数类型

1. float [ (m, d) ] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节。
示例:float(4.2)
小数位数不足补0,超过小数位数按四舍五入进位,99.996 进位成 100.00,超过总长度(d),则插入失败。
下面float长度为默认的
插入较长的值会导致精度丢失。
2. decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

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

decimal(5,2) 表示的范围是 -999.99 ~ 999.99
decimal(5,2) unsigned 表示的范围 0 ~ 999.99
decimal float 很像,但是有区别 : float和 decimal 表示的精度不一样。

3. 字符串类型

1. char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
在Innodb一个汉字占3个字节,但插入的数据明显超过3个字节,还能插入进去,在MySQL中只有字符的概念,比如'a',1 2 3 4,一个汉字,都称为1个字符,虽然汉字占3个字节,但被称为一个字符,所以能插入2个字符,超过2字符就插入失败。
2. varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

varchar最大长度为65535(包括用于记录实际分配的大小1~3字节)个字节,并不是字符,在编码为utf8mb4最大只能开辟16383个字符。

varchar 长度可以指定为 0 65535 之间的值,但是有 1 - 3 个字节用于记录数据大小,所以说有效字
节数是 65532
关于 varchar(len),len 到底是多大,这个 len 值,和表的编码密切相关:
当我们的表的编码是utf8mb4时, varchar(n) 的参数 n 最大值是 65532/4=16383[因为utf8mb4中,一个字符占用4个字节 ],如果编码是utf8,varchar(n) 的参数 n 最大是 65532/3=21845(因为utf8中,一个字符占用3字节)。

3. char和varchar的区别

char类似c语言开辟了一段定长大小的空间,varchar大小则是变长的。

比如 char和varchar的大小都为20,后续不管插入多少个字符,char都只给你20个,varchar则会根据你插入了多少个字符而分配多少个字符。

utf8为例:

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

4 日期和时间类型

常用的日期有如下三个:
1. date:           日期 'yyyy - mm - dd' (年月日) ,占用三字节。
2. datetime:    时间日期格式 'yyyy - mm -dd HH:ii:ss' (年月日+时分秒) 表示范围从 1000 9999 ,占用八字节。
3. timestamp: 时间戳,从 1970 年开始的 yyyy - mm - dd HH:ii:ss 格式和 datetime 完全一致,占用
四字节。
创建表:
create table birthday (t1 date, t2 datetime, t3 timestamp);

插入数据:

insert into birthday(t1,t2) values('1997-7-1','2008-8-8 12:1:1')

timestamp不需要手动插入,默认会用当前的时间戳缺省,会随之时间自动变换。

比如评论时会自动显示当前时间,过了一段时间又会更新。

5. enumset

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

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

个;当我们添加枚举值时,也可以添加对应的数字编号。

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

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“ 数字 ,因为这些选项的每个选项值依次对应数: 1,2,4,8,16,32 .... 最多64 个。
创建表:
create table test8( name varchar(20), age enum('男','女'), hobby set('足球','看电影','代码','看书','旅游') );

插入数据:

enum可以用定义时的字面值,也可以用枚举常量(1 ~ 65535),只能选择其中一个。

set可以用定义时的字面值,可以选择多个,但常量代表对应的二进制位数(1~64),比如3-> 11,也就是前2个数据,1就是1,也就是前1个数据。

set的查询

这种写法是严格匹配的,并不会把自己别的爱好也显示出来。

find_in_set函数

find_in_set函数的返回结果如果是非0就代表真,也是集合对应的下标(从1开始)

这样就能显示包含该查询数据,也能包含自己其他的数据。

相关文章:

MySQL(数据类型)

目录 1. 数值类型 2. bit类型 3.小数类型 3. 字符串类型 4 日期和时间类型 5. enum和set 1. 数值类型 对标C语言: tinyint->char(1字节): 有符号:127 ~ 255 无符号:0 ~ -128。 smalli…...

pytorch中的tqdm库

tqdm 是一个 Python 的进度条库,名字来源于阿拉伯语 "taqaddum"(意思是“进步”)。它以简单易用、高效著称,常用于循环操作中显示进度信息。 基本用法 1. 普通循环 tqdm 可以轻松为 for 循环添加进度条: …...

NoSQL大数据存储技术测试(5)MongoDB的原理和使用

单项选择题 第1题 关于 MongoDB 集群部署下面说法不正确的是() 已经不使用主从复制的模式 在实际应用场景中, Mongodb 集群结合复制集和分片机制 MongoDB 支持自动分片, 不支持手动切分 (我的答案) 每…...

【Golang】Go语言编程思想(六):Channel,第四节,Select

使用 Select 如果此时我们有多个 channel,我们想从多个 channel 接收数据,谁来的快先输出谁,此时应该怎么做呢?答案是使用 select: package mainimport "fmt"func main() {var c1, c2 chan int // c1 and …...

Vue2简介

一、官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ 二、介绍与描述 动态构建用户界面的渐进式 JavaScript 框架 作者: 尤雨溪 三、Vue 的特点 遵循 MVVM 模式 编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发 它本身只关注 UI, 也可以引入其它第三…...

EasyPlayer.js播放器如何在iOS上实现低延时直播?

随着流媒体技术的迅速发展,H5流媒体播放器已成为现代网络视频播放的重要工具。其中,EasyPlayer.js播放器作为一款功能强大的H5播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。 那么要在iOS上…...

ChatGPT Pro是什么

ChatGPT Pro 和 ChatGPT Plus 的区别主要体现在功能范围、适用场景和目标用户上。 ChatGPT Plus 功能 • 价格:20美元/月。 • 目标用户:针对个人用户设计。 • 主要特点: • 在高峰期响应速度更快。 • 使用高级模型(如 GPT-4…...

基于Springboot汽车资讯网站【附源码】

基于Springboot汽车资讯网站 效果如下: 系统主页面 汽车信息页面 系统登陆页面 汽车信息推荐页面 经销商页面 留言反馈页面 用户管理页面 汽车信息页面 研究背景 随着信息技术的快速发展和互联网的普及,互联网已成为人们查找信息的重要场所。汽车资讯…...

MySQL-DQL之数据表操作

文章目录 零. 准备工作一. 简单查询1.查询所有的商品.2.查询商品名和商品价格.3.查询结果是表达式(运算查询):将所有商品的价格10元进行显示. 二. 条件查询1. 比较查询2. 范围查询3. 逻辑查询4. 模糊查询5. 非空查询 三. 排序查询四. 聚合查询…...

Luckysheet 实现 excel 多人在线协同编辑(全功能实现增强版)

前言 感谢大家对 Multi person online edit(多人在线编辑器) 项目的支持,mpoe 项目使用 quill、luckysheet、canvas-editor 实现的 md、excel、word 在线协同编辑,欢迎大家Fork 代码,多多 Start哦~ Multi person online edit 多人协同编辑器…...

vue 给div增加title属性

省略号 移入显示文字 在很多时候,我们页面上其实有时候展示不出来很多很多文字的,这个时候我们就不得不对这个文字进行处理,但是我们鼠标放到文字上时,还想展示所有的文字,这种方式其实有2种 一Tooltip 文字提示 第一…...

设计模式之工厂模式:从汽车工厂到代码工厂

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 工厂模式概述 想象一下你走进一家4S店准备买车。作为顾客,你不需要知道汽车是如何被制造出来的,你只需要告诉销售顾问&a…...

人脸识别Adaface之libpytorch部署

目录 1. libpytorch下载2. Adaface模型下载3. 模型转换4. c推理4.1 前处理4.2 推理4.3 编译运行4.3.1 写CMakeLists.txt4.3.2 编译4.3.3 运行 1. libpytorch下载 参考: https://blog.csdn.net/liang_baikai/article/details/127849577 下载完成后,将其解…...

vue3+echarts+websocket分时图与K线图实时推送

一、父组件代码&#xff1a; <template> <div class"chart-box" v-loading"loading"> <!-- tab导航栏 --> <div class"tab-box"> <div class"tab-list"> <div v-for"(item, index) in tabList…...

小程序开发实战项目:构建简易待办事项列表

随着移动互联网的飞速发展&#xff0c;小程序以其便捷性、即用即走的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是电商平台的购物助手&#xff0c;还是餐饮行业的点餐系统&#xff0c;小程序都在各个领域发挥着巨大的作用。 小程序开发基础 1. 小程序简介 小程序是…...

SD Express 卡漏洞导致笔记本电脑和游戏机遭受内存攻击

Positive Technologies 最近发布的一份报告揭示了一个名为 DaMAgeCard 的新漏洞&#xff0c;攻击者可以利用该漏洞利用 SD Express 内存卡直接访问系统内存。 该漏洞利用了 SD Express 中引入的直接内存访问 (DMA) 功能来加速数据传输速度&#xff0c;但也为对支持该标准的设备…...

前端node环境安装:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

需求&#xff1a;在做前端开发的时候&#xff0c;有的时候 这个项目需要 node 14 那个项目需要 node 16&#xff0c;我们也不能卸载 安装 。这岂不是很麻烦。这个时候 就需要 一个工具 来管理我们的 node 版本和 npm 版本。 下面就分享一个 nvm 工具 用来管理 node 版本。 这个…...

java之集合(详细-Map,Set,List)

1集合体系概述 1.1集合的概念 集合是一种容器&#xff0c;用来装数据的&#xff0c;类似于数组&#xff0c;但集合的大小可变&#xff0c;开发中也非常常用。 1.2集合分类 集合分为单列集合和多列集合 Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff…...

常见LeetCode-Saw200

用来记录需要知道见过的题型&#xff1a; LeetCode2-两数相加 说明&#xff1a;以链表的形势给了你每个位的数字&#xff0c;而且是逆序&#xff0c;直接从开头&#xff08;个位&#xff09;遍历相加。带上进位即可。有一个为空就直接计算另一个和进位。 LeetCode-3.无重复字符…...

Unity 制作一个视频播放器(打包后,可在外部编辑并放置新的视频)

效果展示&#xff1a; 在这里&#xff0c;我把视频名称&#xff08;Json&#xff09;和对应的视频资源都放在了StreamingAssets文件夹下&#xff0c;以便于打包后&#xff0c;客户还可以自己在外部增加、删除、修改对应的视频资料。 如有需要&#xff0c;请联细抠抠。...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...