6 MySQL常用的数据类型

1、整型
sql 复制代码
-- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好;
2、浮点数
sql 复制代码
-- 1.FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小数类型。CPU 原生支持浮点运算,但是不支持 DECIMAl 类型的计算,因此 DECIMAL 的计算比浮点类型需要更高的代价;
-- 2.FLOAT、DOUBLE 和 DECIMAL 都可以指定列宽,例如 DECIMAL(18, 9) 表示总共 18 位,取 9 位存储小数部分,剩下 9 位存储整数部分;
3、字符串
sql 复制代码
-- 1.CHAR 和 VARCHAR 两种类型,一种是定长的,一种是变长的
-- 2.VARCHAR 这种变长类型能够节省空间,因为只需要存储必要的内容。但是在执行 UPDATE 时可能会使行变得比原来长,当超出一个页所能容纳的大小时,就要执行额外的操作。MyISAM 会将行拆成不同的片段存储,而 InnoDB 则需要分裂页来使行放进页内。
-- 3.VARCHAR 会保留字符串末尾的空格,而 CHAR 会删除;
4、时间和日期

MySQL 提供了两种相似的日期时间类型: DATETIME 和 TIMESTAMP

DATETIME

sql 复制代码
--1.能够保存从 1001 年到 9999 年的日期和时间,精度为秒,使用 8 字节的存储空间;
--2.它与时区无关
--3.默认情况下,MySQL 以一种可排序的、无歧义的格式显示 DATETIME 值,例如"2008-01-16 22:37:08",这是 ANSI 标准定义的日期和时间表示方法。

TIMESTAMP

sql 复制代码
--1.和 UNIX 时间戳相同,保存从 1970 年 1 月 1 日午夜(格林威治时间)以来的秒数,使用 4 个字节,只能表示从 1970 年 到 2038 年
--2.它和时区有关,也就是说一个时间戳在不同的时区所代表的具体时间是不同的.
--3.MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提供了 UNIX_TIMESTAMP() 函数把日期转换为 UNIX 时间戳;
--4.默认情况下,如果插入时没有指定 TIMESTAMP 列的值,会将这个值设置为当前时间
--5.应该尽量使用 TIMESTAMP,因为它比 DATETIME 空间效率更高
5、BLOB 和 TEXT
sql 复制代码
--1.BLOB和TEXT都是为存储很大的数据而设计的数据类型,分别采用二进制和字符方式存储
--2.与其他类型不同,MySQL把每个BLOB和TEXT值当做一个独立的对象去处理。当BLOB和TEXT值太大时,InnoDB会使用专门的"外部"存储区域来进行存储,此时每个值在行内需要1~4个字节存储一个指针,然后在外部存储区域存储实际的值。
--3.MySQL对BLOB和TEXT列进行排序与其他类型是不同的:它只对每个列的最前max_sort_length个字节而不是整个字符串做排序。同样的,MySQL也不能将BLOB或TEXT列全部长度的字符串进行索引;
相关推荐
初听于你27 分钟前
高频面试题解析:算法到数据库全攻略
数据库·算法
瓯雅爱分享5 小时前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
BTU_YC6 小时前
Neo4j查询计划完全指南:读懂数据库的“执行蓝图“
数据库·neo4j
非极限码农7 小时前
Neo4j图数据库上手指南
大数据·数据库·数据分析·neo4j
mit6.8247 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
咋吃都不胖lyh7 小时前
SQL-多对多关系
android·mysql·数据分析
苏打水com8 小时前
数据库进阶实战:从性能优化到分布式架构的核心突破
数据库·后端
shan~~8 小时前
linux达梦数据库操作
linux·数据库·chrome
武文斌779 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
CoderIsArt9 小时前
SQLite架构
数据库·sqlite