【MySQL】近2万字,138张图解,我终于把mysql总结完整了,建议收藏(13)



查看一下 test5 表
然后插入部分数据
insert into test5 values ('2020-06-13')('20200613')(20200613);

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);

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 提供了很多种字符串类型 , 下面是字符串类型的汇总
下面我们对这些数据类型做一个详细的介绍
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;

结果如下
可以看到 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 类型 , 可存储的最大长度不同 , 可根据实际情况选择 。