首页 > 数据库 >MySQL基础 -----MySQL数据类型

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

时间:2024-12-18 22:57:40浏览次数:11  
标签:insert into float 数据类型 插入 ----- 测试 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类型的数据不用用户手动添加,会随着当前行的数据更新为自动更新;

标签:insert,into,float,数据类型,插入,-----,测试,MySQL,类型
From: https://blog.csdn.net/2302_80207345/article/details/144494679

相关文章

  • Python知识分享第二十九天-PyMySQL
    PyMySQL介绍:概述:它是Python的1个库(模块),可以实现通过Python代码,操作MySQL数据库.该库需要手动安装一下.安装方式:方式1:导包时自动安装.方式2:在PyCharm的Settings->Python编辑器或者Anaconda->安装方式3:通过pip方式,在命令行中......
  • xss-labs通关手册
    文档结构与内容1.整体结构:文档按照xsslabs的关卡顺序,从level1到level11依次进行介绍,每个关卡都包含了页面表现、尝试过程、源码分析、通关payload等内容。2.各关卡详情    Level1:页面显示get传参name的值插入到html中,无过滤,直接插入js代码`<script>alert(/xss/)......
  • 「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
    本篇将带你实现一个评分统计工具,用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果,并统计平均分。这一功能适合用于问卷调查或评分统计的场景。关键词UI互动应用评分统计状态管理数据处理多目标评分一、功能说明评分统计工具允许用户对多个选项(如电影、......
  • 20222426 2021-2022-2 《网络与系统攻防技术》实验八实验报告
    202224262021-2022-2《网络与系统攻防技术》实验八实验报告1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。数据传递方式:GET方法的参数包含在URL中,而POST方法的参数则放在请求体中。安全性:虽然POST方法在数据......
  • 从 spring-boot-starter-jdbc 到 DataSource
    JDBC是什么JDBC是JavaDataBaseConnectivity的缩写,是由一组用Java语言编写的类和接口,用于在Java应用程序中与数据库进行交互。JDBC只是一套标准规范,具体的实现由各个数据库厂商去实现。对开发者来说其屏蔽了不同数据库之间的区别,可以使用相同的方式(JavaAPI)去操作不同......
  • 基础算法--二分查找插入位置
    给定一个有序数组如[0,1,2,3,4](从小达大排序)和一个正整数num,查找二分插入位置,使得,插入num后的数组依然有序代码如下:Java版本publicintgetInsertIndex(int[]nums,intnum){if(nums==null||nums.length==0)return0;inti=0;intj=nums.len......
  • 半导体-OS测试原理概述
    01】开路/短路测试(也称为连续性测试或接触测试)验证在设备测试期间,是否已与DUT上的所有信号引脚建立了电气接触,并确保没有信号引脚与其他信号引脚或电源/地线短路。设备的成本与测试每个设备所需的时间直接相关。减少每个设备的平均测试时间的最佳方法之一是尽快排除有缺陷的......
  • (12-8-03)基于CPM中英双语多模态大模型的文生图系统:模型微调(3)
    12.9.3 训练初始化文件initializer.py的功能是提供模型训练的初始化配置和加载工具,包括解析训练参数、设置分布式训练环境、加载预训练模型和分配器(LLM和VPM),并设置所需的文件路径和目录结构。通过这个文件,用户可以轻松配置模型并启动模型训练过程。logger=init_logger......
  • 1264. 页面推荐 - 力扣(LeetCode)
    1264.页面推荐-力扣(LeetCode)目标输入输入:朋友关系列表 user1_iduser2_id12131423242561输入:喜欢列表user_idpage_id188223324456511633277377688输出输出:推荐页面列表recommended_page2324563377分析编写解决方案,向user_id=1的用户,推荐其朋友们喜欢的页......
  • 608. 树节点 - 力扣(LeetCode)
    608.树节点-力扣(LeetCode)目标输入输入:Treetable:idp_id121314252输出输出:idtype1Root2Inner3Leaf4Leaf5Leaf分析树中的每个节点可以是以下三种类型之一:"Leaf":节点是叶子节点。"Root":节点是树的根节点。"lnner":节点既不是叶子节点也不是根节点。编写一个解决......