MySQL-MySQL数据类型

文章目录

  • 〇. 数据类型分类
  • 一、整形
    • 1. tinyint [unsigned]
    • 2. bit[(M)]
  • 二、浮点数类型
    • float[(m, d)] [unsigned]
    • decimal(m, d) [unsigned]
  • 三、字符串类型
    • 1.char(L)
    • 2.varchar(L)
  • 四、日期类型
  • 五、enum和set
    • 查询enum和set
  • 总结


〇. 数据类型分类

在这里插入图片描述

一、整形

整形我们今天只讲两个,bit和tinyint,知道了这两个如何使用,整形家族就都会使用了。
在这里插入图片描述

1. tinyint [unsigned]

因为tinyint只占一个字节,所以如果是有符号的tinyint,取值范围就是[-128,127]。
在这里插入图片描述
那如果我们想让它定义为无符号的应该怎么办呢?
在这里插入图片描述
无符号的tiny它的取值范围就是[0,255]。
在这里插入图片描述

2. bit[(M)]

M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

在这里插入图片描述
如果插入的数据出现了溢出,数据库就会不让你进行插入,例如这里的bit默认只是一个比特位,但是我输入3,数据库直接提醒我数据太大并拦截此次插入。


现在我将bit的位数设置为10,再插入下面一些列数据,其中比较特别的是我还能插入’a’,因为我们学过C语言可以知道,其实字符也是根据ASCII值来表示的。
在这里插入图片描述


二、浮点数类型

float[(m, d)] [unsigned]

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

示例:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入
在这里插入图片描述
但是float有一个比较明显的问题,由于float的实现原理,它对一些精度细致的数据会丢失精度。
在这里插入图片描述
在这里插入图片描述

当然我们的float也是可以设置为unsigned的,大家下来可以自己尝试一下。
在这里插入图片描述

decimal(m, d) [unsigned]

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

其精度更细,用法与float一样。

三、字符串类型

1.char(L)

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255。 注意不是字节而是字符!!!

在这里插入图片描述
这里我仅仅将char设置成了两个字符,但是不仅可以插入’ab’两个字符,还可以插入‘你好’两个字符,这说明这里的char类型是与我们学习的C语言的char数组是不同的,char数组开辟的是字节空间,数据库的char开辟的是字符长度。


2.varchar(L)

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

那么varchar与char有什么区别呢?

  • char(L):L设置多少,你插入的对应数据的长度就一定是这么长,即使你仅仅只插入了1个字符,但是实际长度还是L字符长度。
  • varchar(L)作为可变字符串,其设置的L长度代表的是你可以插入的最多字符长度,即设置其字符上限,你插入数据的时候,可以只插入1个字符,2个字符,最终的长度不会以L长度为准,而是根据你实际插入的字符长度来计算,就有点类似于我们C++的string,但是由于要实现string的动态控制字节长度,就需要有其他的辅助成员变量来帮助我们实现可变的功能,varchar也一样,所以它内部也注定有1 - 3 个字节用于记录数据大小。
    在这里插入图片描述

所以我们就要根据实际情况来选择使用char还是varchar,

  • 如果保存电话号码,我们就可以选择用char定长字符串。
  • 如果保存姓名,由于我国是多民族国家,名字有长有短,所以更适合用varchar可变字符串来保存姓名。

在这里插入图片描述


四、日期类型

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

这些都很好理解,但是这里需要讲的是datatime和timestamp的区别,他们所表现的形式都是 ‘yyyy-mm-dd HH:ii:ss’ ,可是timestamp有些特殊,它有一个特性,当设置了DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
当程序员对表中的数据进行增删改的时候,同时它也会更新自己的时间戳,将时间更新为当前的时间。
在这里插入图片描述

五、enum和set

  • enum:枚举,“单选”类型;enum(‘选项1’,‘选项2’,‘选项3’,…);
  • set:集合,“多选”类型;set(‘选项值1’,‘选项值2’,‘选项值3’, …);

在这里插入图片描述
enum还有一种选择方式,可以传下标。不过这里的下标是从1开始的,可不是像C++一样从0开始哦。
set也还有一种选择方式,可以传一个位图来表示每一个选项。
在这里插入图片描述

查询enum和set

在这里插入图片描述
在这里插入图片描述
这里使用了find_in_set(set1 , set2),如果set1集合被set2包含,那么就返回真。
如果想查询hoppy既有足球又有羽毛球又有跑步的,使用 and 即可。and与我们C语言的&&很像。

总结

本章主要详细讲解了MySQL数据类型,大多数情况都在图片中展现了出来。 其中一个非常重要的结论是,在mysql中插入数据,如果插入的数据超出的该类型的取值范围,mysql是会直接将你这次的错误插入拦截的,所以mysql的数据是比较具有合法性的。

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

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

相关文章

整洁架构SOLID-接口隔离原则(ISP)

文章目录 定义ISP与编程语言ISP与软件架构小结 定义 在上图中有多个用户需要操作OPS类。现在,我们假设这里的User1只需要使用op1,User2只需要使用op2,User3只需要使用op3。 在这种情况下,如果OPS类是用Java编程语言编写的,那么很明显&#x…

对B-树的理解

目录 前言-为什么要使用B-树?B-树概念 前言-为什么要使用B-树? 首先,我们正常的搜索都有一下方式: 搜索二叉树,极端场景下会退化,类似于单支,此时的效率变成了O(N);为了解决1的问题…

spring boot(学习笔记第十三课)

spring boot(学习笔记第十三课) Spring Security的logout,传统后端开发模式和前后端分离模式的不同,invalidateHttpSession不好用,bug? 学习内容: 传统后端开发模式 vs 前后端分离模式Spring Security的logout功能 1.…

最新 Kubernetes 集群部署 + Containerd容器运行时 + flannel 网络插件(保姆级教程,最新 K8S 1.28.2 版本)

资源列表 操作系统配置主机名IP所需插件CentOS 7.92C4Gk8s-master192.168.60.143flannel-cni-plugin、flannel、coredns、etcd、kube-apiserver、kube-controller-manager、kube-proxy、 kube-scheduler 、containerd、pause 、crictlCentOS 7.92C4Gk8s-node01192.168.60.144f…

Python 实现股票指标计算——BOLL布林线

1 公式 中轨线 N日的移动平均线,N一般取20 上轨线 中轨线 X倍的标准差,X一般取2 下轨线 中轨线-Y倍的标准差, Y一般取2 2 数据准备 我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格…

强化学习:bellman方程求解state value例题

最近在学习强化学习相关知识,强烈推荐西湖大学赵世钰老师的课程,讲解的非常清晰流畅,一路学习下来令人身心大爽,感受数学抽丝剥茧,化繁为简的神奇魅力。 bellman方程还是比较容易理解的:当前状态下的state …

java Web学习笔记(三)

文章目录 1. 前置知识2. Vue使用vite构建项目SFC入门使用ref和.value体会响应式数据&#xff08;使用ES6和setup&#xff09; 3. Vue视图渲染技术及其语法模板语法&#xff1a;命令插值表达式渲染双标><中的文本&#xff08;还挺可爱&#xff09;属性渲染命令事件渲染命令…

UWB定位系统在智能制造行业中的主要功能

定位系统全套源码&#xff0c;UWB定位系统 UWB&#xff08;超宽带&#xff09;定位系统在智能制造行业赋能可以实现多种功能&#xff0c;这些功能不仅提升了企业的管理水平和生产效率&#xff0c;还增强了生产现场的安全性和灵活性。 开发语言&#xff1a;JAVA 开发工具&…

vue3使用Echarts图表生成项目进度甘特图

先看效果 代码展示 <template><h1>项目进度甘特图</h1><div id"app"><!-- Echarts 图表 --><div ref"progressChart" class"progressChart"></div></div> </template><script setup&…

微博图片下载助手

开发的一款「微博图片下载助手」支持一键保存用户图片 / 原图保存 / 支持保存 live 动图&#xff0c;支持免登录&#xff0c;但是不支持去水印哦。另外软件是易语言编写的&#xff0c;一些杀毒软件可能会误报。 链接: https://pan.baidu.com/s/1ZwDuuS2AF0-nxGgYYPve_g?pwdwn…

Qt项目中添加自定义文件夹,进行整理归类

Qt项目中添加文件夹进行归类 1、在windows的工程目录下创建一个文件夹&#xff0c;如widgets 2、将.h 、.cpp、.ui文件拷贝到windows该文件夹widgets 3、在qt工程中&#xff0c;根目录右键&#xff0c;选择添加现有文件&#xff0c;批量选择 .h 、.cpp、.ui文件之后&#xf…

内网信息收集:手动、脚本和工具查IP、端口

1.手动查IP和端口 2.工具查IP 3.工具查端口 我们在内网中拿下目标机器后&#xff0c;需要进行一系列的信息收集&#xff0c;以下为总结的收集方法 1.手动信息收集&#xff1a; 以下命令在CS执行时命令前须加shell,如&#xff1a;shell ipconfig 1.收集IP网卡&#xff1a; ip…

使用Jan,把你的PC变成AI机器!支持在Windows,MacOS,Linux上运行大语言模型

最近有个概念叫“AIPC” ,听起来很牛逼,其实就是让PC运行AI算法&软件,比如运行大语言模型。 我们并不需要特意去买台联想电脑,完全可以用现成的软件把你的电脑变成AIPC。 昨天分享了一个运行Llama3大语言模型的软件叫LMStudio。 有人在评论中反馈,有更好的开源软件叫…

LabVIEW学习-LabVIEW储存Excel表格

上述实现了将格式化的时间和正弦波的频率振幅相位以及正弦波数据输入到excel表格中。 下面介绍其中使用到的函数&#xff1a; 1. 所在位置&#xff0c;函数选板->定时->获取日期/时间(秒) 2. 将获取的时间进行格式化处理&#xff0c;输出格式化的日期/时间字符串。 函…

MySQL更新和删除(DML)

DML-修改数据 UPDATE 表名 SET 字段1 值1&#xff0c;字段2值2&#xff0c;....[WHERE 条件] 例如 1.这个就是把employee表中的这个name字段里面并且id字段为1的名字改为itheima update employee set nameitheima where id 1; 2.这个就是把employee这个表中的name字段和…

acrobat 中 PDF 复制时不能精确选中所选内容所在行的一种解决方法

现象&#xff1a;划取行的时候&#xff0c;自动扩展为多行 如果整段选中复制&#xff0c;粘贴后是乱码 解决步骤 识别完&#xff0c;保存 验证 可以按行复制了。

【算法】平衡二叉树

难度&#xff1a;简单 题目 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例&#xff1a; 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true 示例2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&…

7.8 CompletableFuture

Future 接口理论知识复习 Future 接口&#xff08;FutureTask 实现类&#xff09;定义了操作异步任务执行的一些方法&#xff0c;如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 比如主线程让一个子线程去执行任务&#xff0c;子线…

day05-matplotlit设置图形各种参数

matplotlib网格 1. 显示网格:plt.grid() plt.grid(True, linestyle "--",color "gray", linewidth "0.5",axis x)显示网格linestyle&#xff1a;线型&#xff0c;“–”:表示网格是虚线&#xff0c;默认为实线color&#xff1a;网格颜色li…

数列分块<1>

本期是数列分块入门<1>。该系列的所有题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:http://hzwer.com/8053.html sto hzwer orz %%% [转载] -----------------------------------------------------------------…