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列全部长度的字符串进行索引;
相关推荐
携欢2 小时前
Portswigger靶场之 Blind SQL injection with time delays通关秘籍
数据库·sql
十八旬2 小时前
苍穹外卖项目实战(日记十)-记录实战教程及问题的解决方法-(day3-2)新增菜品功能完整版
java·开发语言·spring boot·mysql·idea·苍穹外卖
FeBaby3 小时前
mysql为什么使用b+树不使用红黑树
数据库·b树·mysql
ZHZCE3 小时前
在 Ubuntu 20.04 上安装 MySQL 8.0
mysql
令狐少侠20113 小时前
如何使用navicat连接容器中的mysql数据库
mysql·docker
青草地溪水旁3 小时前
`mysql_query()` 数据库查询函数
数据库·mysql·c
玩转数据库管理工具FOR DBLENS4 小时前
精准测试的密码:解密等价类划分,让Bug无处可逃
数据库·单元测试·测试用例·bug·数据库开发
AAA修煤气灶刘哥4 小时前
踩完 10 个坑后,我把多表查询 + MyBatis 动态 SQL 写成了干货
java·数据库·后端
怕浪猫4 小时前
MySQL 多表查询的应用
sql·mysql
秦jh_4 小时前
【MySQL】基本查询
linux·数据库·c++·mysql