MySQL基础 -----MySQL数据类型

目录

INT类型

tinyint类型

类型大小范围

测试tinyint类型数据

float类型

测试:

测试正常数据范围的数据

测试插入范围超过临界值的数据:

测试float类型的四舍五入

​编辑

decimal类型

同样测试:

字符串类型

char类型

测试:

varchar类型

测试:

溢出测试:

DATA类型:

date类型

测试:

datetime

测试:

timestamp :

测试:


INT类型

分为tinyint,.smallint,mediumint,int,bigint类型,在此处只介绍tinyint的细节,其他int的类型都是相似的,只需要注意类型的范围大小和有无符号即可。

tinyint类型

占用空间:1字节

类型大小范围

有符号时:-128 ~ 127

无符号时:0 ~255

测试tinyint类型数据

#新建一张表用来测试,其中tinyint为有符号类型
mysql> create table t1(-> id tinyint);#插入测试数据--插入最小值-128
mysql> insert into t1 values(-128);#插入测试数据--插入小于最小值的值-129
mysql> insert into t1 values(-129);#插入测试数据--插入最大值127
mysql> insert into t1 values(127);#插入测试数据--插入超过最大极限的值128
mysql> insert into t1 values(128);

显示:当测试插入-128和插入127时,显示数据插入成功:

使用sql语句查询表中所有数据

#显示指定表中的所有数据
select* from 表名

显示:

说明插入的数据只要在有符号tinyint规定的范围内,是可以插入成功的,那么来看看不合法的数据插入:插入测试数据-129和128

MySQL直接提示数据过大,不允许我们此次插入。换句话说,MySQL保证了自己表中数据的可靠性和合法性。

无符号的tinyint大家可以下来自行测试;

float类型

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

范围:例子:当m=4,d=2时,范围大小为[-99.99 ~ 99.99],float类型范围和用户自定义的m,d强关联

测试:

测试正常数据范围的数据

sql语句

#插入负数的临界值
insert into test_float_tb values( 2,-99.99);
#插入整数的临界值
insert into test_float_tb values( 2,99.99);#查看表中数据
select* from test_float_tb;

显示:说明数据在-99.99~99.99中的数据都能插入,只需注意建立表时的float类型设置的长度和精度即可

测试插入范围超过临界值的数据:

#插入100
insert into test_float_tb(1,100.00);
#插入999
insert into test_float_tb(2,999.00);

显示:说明表会约束用户差插入的数据,保证数据可信

注意:关于精度问题:当插入的数据的小数位长度超过创建表时的float的约束,会四舍五入存储,保证小数精度与表的约束的精度相等!

测试float类型的四舍五入

#新建一张测试的表,float类型设置m=4,d=2
mysql> create table t2(-> score float(4,2)-> );#插入测试数据77.556
insert into t2 values(77.556);#插入测试数据80.0
insert into t2 values(80.0);#测试插入数据79.99
insert into t2 values(79.994);

插入数据77.556后,显示数据插入成功,我们使用select* from t2查询一下表中的数据:

说明float类型会自动帮我们对查出指定精度的数据做四舍五入

float类型设置的d最大只能是8位,超过8位数据将会有缺失精度的风险!

#更改先前创建的t2表中的float精度
mysql> alter table t2 modify salary float(20,10);#插入测试数据127834.12345678435
mysql> insert into t2 values(127834.12345678435);

使用select* from t2查看表中数据:

精度缺失!

decimal类型

特点:所见即所得,和float相比最大的特征就是不存在损失精度的问题(前提是保证用户新增的数据不溢出),其他用法基本一致

同样测试:

#创建表t4用来测试
mysql> create table t4(-> salary decimal(8,8));#插入测试数据127834.12345678435
mysql> insert into t4 values(127834.12345678435);

显示

说明使用decimal类型可以保证浮点数的精度不会缺失

字符串类型

char类型

char类型在MySQL中是一种固定长度的字符串类型,建表时定义长度,只允许长度范围内的字符串插入;注意!此处的长度指的是字符长度,而不是字节!与编码格式相关,此处采用utf8的格式

测试:
#新建表t5来测试char类型
mysql> create table t5( name char(2));#插入字符数据'你好';
mysql> insert into t5 values('你好');#插入字符数据'你好啊';
mysql> insert into t5 values('你好啊');

当插入2个字符'你好'时,MySQL允许插入,但是当插入'你好啊'时,此次插入被拦截

查一下t5中的内容:

varchar类型

很简单,就是一个可变长字符串类型,在用户设定的varchar范围内,会根据用户新增的字符串数据长度自动推导长度,但是不能超过建表时规定的varchar长度

测试:
#更新一下表的属性
mysql> alter table t5 modify name varchar(5);#插入'晚上好'
mysql> insert into t5 values('晚上好');#插入'晚上好吗?'
mysql> insert into t5 values('晚上好吗?');

显示插入成功:查一下:

溢出测试:

#插入数据'兄弟你好香啊!'
mysql> insert into t5 values('兄弟你好香啊!');

很显然不允许我们此次插入;

DATA类型:

常用的日期类型:

date类型

格式:日期 'yyyy-mm-dd' ,占用三字节

测试:

和上述的基本类型同样的测试方法,此处就不再赘述,唯一要注意的就是insert时注意日期的格式问题;

datetime

时间日期格式:  'yyyy - mm - dd HH:ii:ss' 表示范围从 1000 9999 ,占用八字节
测试:
和上述的基本类型同样的测试方法,此处就不再赘述,唯一要注意的就是insert时注意日期的格式问题,有空格隔开哦~;

timestamp

时间戳,从 1970 年开始的 yyyy - mm - dd HH:ii:ss 格式和 datetime 完全一致,占用 四字节
测试:
#新建表t6来测试
mysql> create table t6(-> id int,-> time timestamp-> );#插入id
mysql> insert into t6 values(1,'2004-12-29 08:43:09');

先不更新数据查一次表中数据:

再次更新时,时间戳会自动更新;

timestamp类型的数据不用用户手动添加,会随着当前行的数据更新为自动更新;

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

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

相关文章

代码开发相关操作

使用Vue项目管理器创建项目:(vue脚手架安装一次就可以全局使用) windowR打开命令窗口,输入vue ui,进入GUI页面,点击创建-> 设置项目名称,在初始化git下面输入:init project&…

如何在 Ubuntu 22.04 上安装和使用 Rust 编程语言环境

简介 Rust 是一门由 Mozilla 开发的系统编程语言,专注于性能、可靠性和内存安全。它在没有垃圾收集的情况下实现了内存安全,这使其成为构建对性能要求苛刻的应用程序(如操作系统、游戏引擎和嵌入式系统)的理想选择。 接下来&…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager(Virtual Machine Manager)是一个图形用户界面应用程序,通过libvirt管理虚拟机(即作为libvirt的图形前端) 因为要在Linux arm环境做测试,记录下virt-manager配置arm虚拟机的过程 先在VMWare中…

ChatGPT客户端安装教程(附下载链接)

用惯了各类AI的我们发现每天打开网页还挺不习惯和麻烦,突然发现客户端上架了,懂摸鱼的人都知道这里面的道行有多深,话不多说,开整! 以下是ChatGPT客户端的详细安装教程,适用于Windows和Mac系统&#xff1a…

Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能

背景:现在有一个新需求,需要借助树结构来实现词库的分类管理,树的节点是不同的分类,不同的分类可以有自己的词库,所以父子节点是互不影响的;同样为了选择的方便性,提出了新需求,选择…

概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。

目录 1 例子1:最典型的,最简单的数组的均值,方差的求法 2 例子1的问题:例子1只是1个特例,而不是普遍情况。 2.1 例子1各种默认假设,导致了求均值和方差的特殊性,特别简单。 2.2 我觉得 加权…

【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯

关键词:鸿蒙、ArkTs、Web组件、通讯、数据 官方文档Web组件用法介绍:文档中心 Web 组件加载沙箱中页面可参考我的另一篇文章:【HarmonyOS NEXT】 如何将rawfile中文件复制到沙箱中_鸿蒙rawfile 复制到沙箱-CSDN博客 目录 如何在鸿蒙应用中加…

ASP.NET Core - 依赖注入 自动批量注入

依赖注入配置变形 随着业务的增长,我们项目工作中的类型、服务越来越多,而每一个服务的依赖注入关系都需要在入口文件通过Service.Add{}方法去进行注册,这将是非常麻烦的,入口文件需要频繁改动,而且代码组织管理也会变…

Spring Boot 3.X:Unable to connect to Redis错误记录

一.背景 最近在搭建一个新项目,本着有新用新的原则,项目选择到了jdk17SpringBoot3.4。但是在测试Redis连接的时候却遇到了以下问题: redis连不上了。于是我先去检查了配置文件的连接信息,发现没问题;再去检查配置类&am…

FFmpeg第一话:FFmpeg 简介与环境搭建

FFmpeg 探索之旅 一、FFmpeg 简介与环境搭建 二、FFmpeg 解码详解 第一话:FFmpeg 简介与环境搭建 FFmpeg 探索之旅一、前言二、FFmpeg 是什么?三、简单介绍其历史背景四、为什么用 C学习 FFmpeg?(一)高性能优势&#…

(vue)el-table在表头添加筛选功能

(vue)el-table在表头添加筛选功能 筛选前&#xff1a; 选择条件&#xff1a; 筛选后&#xff1a; 返回数据格式: 代码: <el-tableref"filterTable":data"projectData.list"height"540":header-cell-style"{border-bottom: 1px soli…

流程引擎Activiti性能优化方案

流程引擎Activiti性能优化方案 Activiti工作流引擎架构概述 Activiti工作流引擎架构大致分为6层。从上到下依次为工作流引擎层、部署层、业务接口层、命令拦截层、命令层和行为层。 基于关系型数据库层面优化 MySQL建表语句优化 Activiti在MySQL中创建默认字符集为utf8&…

Vue3源码笔记阅读1——Ref响应式原理

本专栏主要用于记录自己的阅读源码的过程,希望能够加深自己学习印象,也欢迎读者可以帮忙完善。接下来每一篇都会从定义、运用两个层面来进行解析 定义 运用 例子:模板中访问ref(1) <template><div>{{str}}</div> </template> <script> impo…

神经网络基础-神经网络搭建和参数计算

文章目录 1.构建神经网络2. 神经网络的优缺点 1.构建神经网络 在 pytorch 中定义深度神经网络其实就是层堆叠的过程&#xff0c;继承自nn.Module&#xff0c;实现两个方法&#xff1a; __init__方法中定义网络中的层结构&#xff0c;主要是全连接层&#xff0c;并进行初始化。…

Dcoker Redis哨兵模式集群介绍与搭建 故障转移 分布式 Java客户端连接

介绍 Redis 哨兵模式&#xff08;Sentinel&#xff09;是 Redis 集群的高可用解决方案&#xff0c;它主要用于监控 Redis 主从复制架构中的主节点和从节点的状态&#xff0c;并提供故障转移和通知功能。通过 Redis 哨兵模式&#xff0c;可以保证 Redis 服务的高可用性和自动故…

机器学习之交叉熵

交叉熵&#xff08;Cross-Entropy&#xff09;是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数&#xff0c;特别是在分类任务中非常常见。它源于信息论&#xff0c;反映了两个概率分布之间的距离。 交叉熵的数学定义 对于分类任务&#xff0c;假设我们有&#…

Scala的泛型界限

泛型界限 上限 泛型的上限&#xff0c;下限。对类型的更加具体的约束&#xff01; 如果给某个泛型设置了上界&#xff1a;这里的类型必须是上界 如果给某个泛型设置了下界&#xff1a;这里的类型必须是下界

vscode中同时运行两个python文件(不用安装插件)

如何在vscode中同时运行两个python文件呢&#xff1f;今天在工作中遇到了这个问题。 查了网上的方法是安装coder runner插件&#xff0c;后来发现自身就有这个功能。所以记录一下,方便后续查找: 这是我的第一个文件&#xff0c;点击右上角的运行旁边的小箭头&#xff0c;有一…

python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django

windows首先安装rabbitmq 点击参考安装 1、环境介绍 Python 3.10.16 其他通过pip安装的版本(Django、pika、celery这几个必须要有最好版本一致) amqp 5.3.1 asgiref 3.8.1 async-timeout 5.0.1 billiard 4.2.1 celery 5.4.0 …