3.MySQL数据类型详解

个人主页:Lei宝啊 

愿所有美好如期而遇


目录

1.数据类型分类

2.数值类型

(1).tinyint,smallint类型等

(2)bit类型

(3)小数类型

1).float

2).decimal

3.字符串类型

(1)char

(2)varchar

(3)char和varchar比较

(4)日期和时间类型

(5)enum和set

综合举个栗子


 

1.数据类型分类

数值类型:bit 

                  tinyint  smalliint  int  bigint  

                  float  double  decimal 

                  bool

文本,二进制类型:

                  char

                  varchar

                  text

时间日期:date  datetime  timestamp

String类型:

                  enum

                  set

2.数值类型

(1).tinyint,smallint类型等

事实证明,mysql不允许不合法的数据插入,-129和128超出了tinyint的范围。

接下来我们测试一下无符号tinyint的范围。

 显然,变成了0~255.

(2)bit类型

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

我们发现竟然什么都没有,为什么呢?

bit字段在显示时,是按照ASCII码对应的值显示

先将num的范围改大点

(3)小数类型

1).float

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

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

我们先不指定宽度和小数位数。

可以看出默认6位小数,再多就会丢失精度。

接下来指定一下宽度和精度。

99.9954进位后就是100.00,超出宽度,数据不合法,数据库不允许插入,精度一定会保持两位,哪怕是补两个0.

这样也可以。 

接下来看一下无符号float

于是我们知道了,float(4,2) unsigned 类型的数据范围只有0~99.99

2).decimal

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

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

decimal的精度很高,基本上插入几就是几,float丢失精度就比较多了。

3.字符串类型

(1)char

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

注意:utf8中一个字符占3个字节,而gbk中一个字符占2个字节 

这里的一个字符可以是数字,字母,符号和汉字,都是一个字符。

(2)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字节)。

(3)char和varchar比较

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

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

(4)日期和时间类型

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

先插入一个date类型的数据。

emmm?我们没插入datastamp类型的数据啊,为什么呢?这是因为他有default值,也就是默认值,当我们不插入时,默认插入现在的时间。而且就算你刻意插入NULL,插不进去,因为他不允许为空。

 

而且时间戳会自动更新当前时间。

(5)enum和set

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

不可插入多个选项。

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

再插入几个数据。

将set里的选项当做比特位,a就是1,a,b就是11,a,b,c就是111,转换为十进制就是1,3,7

再来看一个。

这样也是可以的。

但是我们也想找包含‘a’的所有项,怎么找?

集合查询使用find_ in_ set函数:
find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0

首先select可以执行表达式和函数。

非0为true,而且我们看到这个函数只能查找单个字符。

这样我们就筛选出了所有爱好为a的人。

那么如何筛选爱好为a,b的人呢?

用and连接就好了。

综合举个栗子

先建个新表。

不可以这样查找。

这样查可以,但是不能够包含。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/158111.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow入门(二十五、单个神经元的扩展——Maxout网络)

Maxout网络的原理 Maxout是Goodfellow在2013年提出的一个新的激活函数,与其它的激活函数相比,Maxout是需要参数的,且参数可以通过网络的反向传播得到学习,因此它比其它激活函数有着更好的性能,理论上可以拟合任意凸函数,进而使得网络取得更好的性能。 Maxout网络主要是扩展单个…

React js原生 详解 HTML 拖放 API(鼠标拖放功能)

最近碰到了个需求,大概就是要通过可视化拖拽的方式配置一个冰柜,需要把预设好的冰柜内部架子模板一个个拖到冰箱内。一开始的想法是用鼠标事件(mousedown、mouseup等)那一套去实现,能实现但是过程过于复杂,…

Blender:制作一个变形动画

就是一个球逐渐地变为一个立方体 首先创建一个球和一个立方体 然后把两个物体放在一起,放缩球,让球包含立方体 之后选中球,为其添加修改器,缩裹 在这里选择缩裹对象为立方体 然后在应用下拉箭头中选择“应用为形态键” 下一步选中…

超越平凡:Topaz Photo AI for Mac带您领略人工智能降噪的魅力

在这个充满噪点和高频信息的时代,照片和视频的降噪成为了一个重要而迫切的需求。Mac用户现在有了一个强大的新工具——Topaz Photo AI for Mac,这是一款利用人工智能技术进行降噪和优化的软件。通过这款软件,您可以轻松地改善图像质量&#x…

如何选择高防CDN和高防IP?

目录 前言 一、对高防CDN的选择 1. 加速性能 2. 抗攻击能力 3. 全球覆盖能力 4. 可靠性和稳定性 二、对高防IP的选择 1. 防御能力 2. 服务质量 3. 安全性 4. 价格 三、高防CDN和高防IP的优缺点对比 1. 高防CDN的优缺点 2. 高防IP的优缺点 总结 前言 随着互联网…

翻译docker官方文档(残缺版)

Build with docker(使用 Docker 技术构建应用程序或系统镜像) Overview (概述) 介绍(instruction) 层次结构(Layers) The order of Dockerfile instructions matters. A Docker build consists of a series of ordered build ins…

CANdb++数据库操作

CANdb数据库操作 创建工程结构文件夹新建数据库&总线描述节点设置节点创建配置Message属性信号设置节点收发信号 环境变量配置一致性检验数据库工程XVehicle.dbc导入工程文件总结 创建工程结构文件夹 在文件夹X-Vehicle-1下,建立工程目录文件夹CANdb&#xff0…

python 如何获取url的名称

一、使用os模块 os模块是Python内置的一个操作系统接口模块,提供了许多与操作系统相关的函数和变量。其中,os.path模块用于处理路径相关的操作,包括文件名、目录名等。 os.path.basename()函数可以用来获取路径中的文件名部分 imp…

每日一题 136. 只出现一次的数字(简单,位运算)

异或运算性质,两个相等的数作异或运算得零,任何数与零作异或运算保持不变 所以整个数组的异或和就是答案 class Solution:def singleNumber(self, nums: List[int]) -> int:ans 0for i in nums:ans ^ ireturn ans一行代码,reduce作累积操…

数据结构--》连接世界的无限可能—— 图

图作为数据结构中的一种重要概念,扮演着连接世界的纽带。与树和二叉树相比,图更加灵活和多样化,它能够描述各种实际问题中的复杂关系,如社交网络中的人际联系、城市交通中的路线规划以及电子网络中的通信路径等。 无论你是初学者还…

英语学习工具推荐

无论您是初学者还是想要巩固英语能力的学习者,我们都为您提供了一个高效而便捷的英语学习工具。 英语复读机,您可以随时输入您想要复读的英语单词、句子或者文章。我们的复读机会循环播放您输入的内容,帮助您加深记忆、提高听力和口语表达能力…

网络安全—小白学习笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟入…

【数据结构】:二叉树与堆排序的实现

1.树概念及结构(了解) 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的有一个特殊的结点&#…

数据结构之队列

目录 队列的定义与结构 队列的实现 队列的结构 初始化空队列 销毁队列 队尾入队列 队头出队列 获取队列头部元素 获取队列尾部元素 判断队列是否为空 获取队列长度 栈与队列经典试题 队列实现栈 栈实现队列 队列的定义与结构 队列是一种先进先出(First…

Netty源码编译

Netty源码编译 想了解Netty源码,最好先从 netty-example 开始,多跑几个 example,了解Netty的实际应用。 编译 netty-example 会出现很多乱七八糟的问题,根本原因是因为缺少 io.netty.util.collection 包。 解决方法 1.先 instal…

指针(2)

1.数组名的理解 一般数组名就是数组首元素的地址 但是有2个例外:1.sizeof(数组名) 这里面数组名表示的是整个数组,计算整个数组的大小,单位为字节。 …

简单易用,效果卓越的电子期刊制作网站

在日常工作和生活中,我们常常需要制作各种文档和资料,比如电子期刊、宣传册、产品手册等。但有时候,我们会因为排版、设计、编辑等问题而感到烦恼。这时候,一个简单易用、效果卓越的电子期刊制作网站就成为了我们的得力助手&#…

相似性搜索:第 1 部分- kNN 和倒置文件索引

图片来源:维亚切斯拉夫叶菲莫夫 一、说明 SImilarity 搜索是一个问题,给定一个查询的目标是在所有数据库文档中找到与其最相似的文档。 在数据科学中,相似性搜索经常出现在NLP领域,搜索引擎或推荐系统中,其中需要检索最…

目标文件格式

目标文件里有什么 目标文件格式 目标文件就是源代码编译后但未进行链接的中间文件(linux下的.o)。 ELF文件:从广义上看,目标文件与可执行文件的格式其实几乎是一样的,可以将目标文件与可执行文件看成是一种类型的文…

忘记开机密码啦!我教你用ventoy找回密码

文章目录 一、前言二、实战过程三、动态演示四、原理解析五、总结 一、前言 当你有一天突然忘记了开机密码怎么办?又要上电脑店花个几十块让人弄?在上一章《你该自己学学安装操作系统了,小白一学就会(ventoy装系统超详细&#xff…