MySQL-多种数据类型详述( 三 )


MySQL-多种数据类型详述

文章插图
 
发现只有前两项不一样 。
TIMETIME 所表示的范围和我们预想的不一样
我们把 test4 改为 TIME 类型,下面是 TIME 的示例
alter table test4 modify id TIME;insert into test4 values ('15:11:23'),('20:13'),('2 11:11'),('3 05'),('33');结果如下
MySQL-多种数据类型详述

文章插图
 
DATEDATE 表示的类型有很多种,下面是 DATE 的几个示例
create table test5 (id date);查看一下 test5 表
MySQL-多种数据类型详述

文章插图
 
然后插入部分数据
insert into test5 values ('2020-06-13'),('20200613'),(20200613);
MySQL-多种数据类型详述

文章插图
 
DATE 的表示一般很多种,如下所示 DATE 的所有形式
  • 'YYYY-MM-DD'
  • 'YYYYMMDD'
  • YYYYMMDD
  • 'YY-MM-DD'
  • 'YYMMDD'
  • YYMMDD
DATETIMEDATETIME 类型,包含日期和时间部分,可以使用引用字符串或者数字,年份可以是 4 位也可以是 2 位 。
下面是 DATETIME 的示例
create table test6 (id datetime);insert into test4 values ('2020-06-13 11:11:11'),(20200613111111),('20200613111111'),(20200613080808);
MySQL-多种数据类型详述

文章插图
 
TIMESTAMPTIMESTAMP 类型和 DATETIME 类型的格式相同,存储 4 个字节(比DATETIME少),取值范围比 DATETIME 小 。
下面来说一下各个时间类型的使用场景
  • 一般表示年月日,通常用 DATE 类型;
  • 用来表示时分秒,通常用 TIME 表示;
  • 年月日时分秒 ,通常用 DATETIME 来表示;
  • 如果需要插入的是当前时间,通常使用 TIMESTAMP 来表示,TIMESTAMP 值返回后显示为 YYYY-MM-DD HH:MM:SS 格式的字符串,
  • 如果只表示年份、则应该使用 YEAR,它比 DATE 类型需要更小的空间 。
每种日期类型都有一个范围,如果超出这个范围,在默认的 SQLMode 下,系统会提示错误,并进行零值存储 。
下面来解释一下 SQLMode 是什么
MySQL 中有一个环境变量是 sql_mode ,sql_mode 支持了 MySQL 的语法、数据校验,我们可以通过下面这种方式来查看当前数据库使用的 sql_mode
select @@sql_mode;一共有下面这几种模式
MySQL-多种数据类型详述

文章插图
 
字符串类型MySQL 提供了很多种字符串类型,下面是字符串类型的汇总
MySQL-多种数据类型详述

文章插图
 
下面我们对这些数据类型做一个详细的介绍
CHAR 和 VARCHAR 类型CHAR 和 VARCHAR 类型很相似,导致很多同学都会忽略他们之间的差别,首先他俩都是用来保存字符串的数据类型,他俩的主要区别在于存储方式不同 。CHAR 类型的长度就是你定义多少显示多少 。占用 M 字节,比如你声明一个 CHAR(20) 的字符串类型,那么每个字符串占用 20 字节,M 的取值范围是 0 - 255 。VARCHAR 是可变长的字符串,范围是 0 - 65535,在字符串检索的时候,CHAR 会去掉尾部的空格,而 VARCHAR 会保留这些空格 。下面是演示例子
create table vctest1 (vc varchar(6),ch char(6));insert into vctest1 values("abc","abc");select length(vc),length(ch) from vctest1;结果如下
MySQL-多种数据类型详述

文章插图
 
可以看到 vc 的字符串类型是 varchar ,长度是 5,ch 的字符串类型是 char,长度是 3 。可以得出结论,varchar 会保留最后的空格,char 会去掉最后的空格 。
BINARY 和 VARBINARY 类型BINARY 和 VARBINARY 与 CHAR 和 VARCHAR 非常类似,不同的是它们包含二进制字符串而不包含非二进制字符串 。BINARY 与 VARBINARY 的最大长度和 CHAR 与 VARCHAR 是一样的,只不过他们是定义字节长度,而 CHAR 和 VARCHAR 对应的是字符长度 。
BLOB 类型BLOB 是一个二进制大对象,可以容纳可变数量的数据 。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 。它们区别在于可容纳存储范围不同 。
TEXT 类型有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择 。


推荐阅读