irpas技术客

〖Python 数据库开发实战 - MySQL篇⑩〗- MySQL 中不同的数据类型_不渴望力量的哈士奇

未知 7710

万叶集🎉 隐约雷鸣,阴霾天空。 🎉🎉 但盼风雨来,能留你在此。 🎉


前言: ? 作者简介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ? 🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


专栏系列(点击解锁)学习路线(点击解锁)知识定位 🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。 MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


文章目录 🐳 MySQL 数据类型定义🐬 数据类型:数字🐠 浮点数丢失精度案例 🐬 数据类型:字符串🐬 数据类型:日期类型

今天章节的内容不多,主要给大家介绍一下 “数据类型” 。上一章节我们在创建数据表的时候有见到过一些数据类型,比如 "INT、VARCHAR、CHAR"等等…

🐳 MySQL 数据类型定义

好了不废话了,接下来就好好的、系统的学习一下这些数据类型的特点吧。


🐬 数据类型:数字 类型大小说明TINYINT1字节小整数SMALLINT2字节普通整数MEDIUMINT3字节普通整数INT4字节较大整数BIGINT8字节大整数FLOAT4字节单精度浮点数DOUBLE8字节双精度浮点数DECIMAL--------压缩的 “严格” 定点数

PS:平时没有在定义整数的时候没有特殊指定的情况下,一般都是默认使用 INT 类型。

PS:单精度浮点数与双精度浮点数在表示数字的时候并不是很精确,是有误差的。在保存精度不是很高的情况下,可以使用 FLOAT、DOUBLE。

PS:在对浮点数精度要求非常高的情况下,比如涉及到金额的时候,就需要使用到 "DECIMAL" 了,该数据类型表示的是 "精确的数字类型"

PS:FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),DECIMAL 如果不指定精度,默认为(10,0);

PS:浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题。

最后再强调一下:在 MySQL 中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好;另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。


🐠 浮点数丢失精度案例

创建一个临时的数据表 temp:(在 test 逻辑库中创建)

USE test; CREATE TABLE temp( id INT UNSIGNED PRIMARY KEY COMMENT "主键:id,呈递增状态,不可重复;UNSIGNED:无符号的整数,也就是说没有负数。", num FLOAT(20,10) COMMENT "测试字段" )COMMENT "测试表";

然后尝试保存一个 0.2 的小数字:(见下图)

看到了吧,这里真的出现了数据丢失的精度问题;所以如果不想出现这种数据丢失的精度问题,就需要在创建数据表的时候弃用 "FLOAT" ,使用 "DECIMAL"。



🐬 数据类型:字符串 类型大小说明CHAR1-255字符固定长度字符串VARCHAR1-65535字符不固定长度字符串TEXT1-65535字符不确定长度字符串MEDIUMTEXT1-1千6百万字符不确定长度字符串LONGTEXT1-42亿字符串不确定长度字符串

PS:需要注意的是,如果 MySQL 字符串类型保存的字符如果太多的情况下,是会影响 MySQL 的读写速度的,一般情况下使用 VARCHAR 这个类型就足够了;如果保存的字符串内容是超长的,一般会选择 NoSQL 数据库来进行保存。 NoSQL 的读写速度要比 MySQL 的超长字符串的读写速度要快很多。后续我们做案例的时候,会将几种数据库结合在一起使用。

🐬 数据类型:日期类型 类型大小说明格式DATE3字节日期YYYY-MM-DDTIME3字节时间HH:MM:SSYEAR1字节年份YYYYDATETIME8字节日期时间YYYY-MM-DD HH:MM:SSTIMESTAMP4字节时间戳YYYYMMDD HHMMSS
DATE:DATE 用于表示 年月日,如果实际应用值需要保存 年月日 就可以使用 DATE。TIME:TIME 用于表示 时分秒,如果实际应用值需要保存 时分秒 就可以使用 TIME。YEAR:YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默认是4位。如果实际应用只保存年份,那么用 1 bytes 保存 YEAR 类型完全可以。不但能够节约存储空间,还能提高表的操作效率。DATETIME:DATETIME 用于表示 年月日 时分秒,是 DATE 和 TIME 的组合,并且记录的年份(见上表)比较长久。如果实际应用中有这样的需求,就可以使用 DATETIME 类型。TIMESTAMP: TIMESTAMP 用于表示 年月日 时分秒,但是记录的年份(见上表)比较短暂。TIMESTAMP 和时区相关,更能反映当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到的同一时间是 不一样的。TIMESTAMP 的属性受 Mysql 版本和服务器 SQLMode 的影响较大。如果记录的日期需要让不同时区的人使用,最好使用 TIMESTAMP。还有一点需要注意的是:时间戳的时间只能是 1970-01-01 00:00:00 之后的。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python #数据库开发实战 #MySQL篇⑩ #MySQL #中不同的数据类型 #quot数据类型quot