MySQL: 数据类型介绍

文章目录


数据类型

数值类型

分为整型和浮点型:

  • BIT类似于数据结构中的位图,BIT可以认为是一组二进制bit位.

    BIT(10)表示这个类型里就存最多10个bit位.

  • 虽然TINYINT和SMALLINT更节省空间,但是还是更推荐使用INT或者BIGINT.

    如果存储空间不够了,多花点钱,多买几个更大的硬盘,用不了几千~

    如果因为使用TINYINT / SMALLINT,用出bug了,这样的bug造成的损失可远远不是几个硬盘能比的.

    TINYINT: -128 => +127

    SMALLINT: -32768 => +32767

    一旦出现bug,天知道有多损失.

  • FLOAT(M,D) 单精度浮点数

  • DOUBLE(M,D) 双精度浮点数

    M表示浮点数的长度(总共有几位).

    D表示小数点后有几位.

    比如定义类型的时候,写作double(3,1).

    数字长度为3,小数点后是1位.

  • DECIMAL(M,D) 和 NUMERIC(M,D) 这俩差别不大,一般使用decimal类型即可.

    DECIMAL(M,D) 不再使用IEEE754这一套了,而是自己设定了一套存储格式,自己设定的这个存储格式,相当于"变长的",付出了更多的空间,来使存储的数据更精确.

    其实不仅仅是空间代价,还有时间代价.拿着两个decimal进行运算的速度,要比拿着两个double进行运算的速度慢很多.

  • 其实MySQL的类型中也提供了"无符号类型",但是在MySQL官方文档中,明确说明了,不建议使用无符号类型.甚至无符号类型可能会在未来的更高版本的MySQL中被删除掉.

字符串类型

  • char(SIZE) 固定长度,比如char(50),表示这个类型(这一列)固定就是50个字符.

    如果接下来存储的数据都是5,6个字节这种,这时每个字段都是消耗50字节,实际上只用上了5,6个字节,剩下的都还空着呢!

  • varchar(SIZE) 可变长度,varchar(50) 表示这个类型就是可变长的,最大是50字符.

    强调: varchar(SIZE) 的单位是字符,不是字节!!!

    尤其在utf8这样的编码方式下,一个字符=好几个字节!!

  • TEXT 也是可变长的字符串,不需要指定最大长度,完全根据你存储的数据自适应,

    虽然TEXT和varchar都是可变长的.

    但是实际使用的时候,还是更倾向于varchar.

    varchar可以指定最大长度,而TEXT没法指定.(TEXT就可能会很大,大小难以预估)

  • BLOB 存储的是二进制的数据.

    前面的那几个都是存储文本数据的~

    如果要存储图片/视频/音频...

    那就使用blob.

    但是一般不建议使用数据库直接存储图片/视频/音频等内容...

    • 一方面,数据库SQL里提供了很多非常丰富的功能,但是这些功能都是只针对数字/字符串/时间日期才有效的...
      只是存二进制数据,上述的功能就不能用了.
    • 另一方面,数据库往往是一个系统中,执行效率比较低的环节,容易成为性能瓶颈.
      把二进制数据提出来,不使用数据库保存,也能够有效降低数据库的负担~

日期类型

  • TIMESTAMP 这个4字节的版本的时间戳,现在不推荐使用了,因为当超过2038年,就溢出了~~ 计算机发展历史上,有一个知名问题,千年虫问题.感兴趣可以去搜一搜~

本文到这里就结束啦~

相关推荐
fengsen521131429 分钟前
MySQL--》如何在MySQL中打造高效优化索引
android·mysql·adb
吴声子夜歌1 小时前
RxJava——Hot Observable和Cold Observable
android·rxjava
世界尽头与你2 小时前
MySQL 三大日志(binlog、redo log 和 undo log)深度解析
数据库·mysql
dreams_dream3 小时前
MySQL 主从复制(小白友好 + 企业级)
android·数据库·mysql
014-code3 小时前
MySQL 事务隔离级别
java·数据库·mysql
城东米粉儿3 小时前
Android PLT Hook 笔记
android
代码星辰3 小时前
MySQL 面试题——深度分页优化
数据库·mysql·覆盖索引·深度分页
城东米粉儿3 小时前
leakcanary原理
android
龙之叶3 小时前
Android ADB Shell 常用命令
android·adb
城东米粉儿4 小时前
Android 图片内存问题分析、定位
android