【mysql知识点整理】 --- mysql常见数据类型整理


1 数值类型

下图摘自: https://www.runoob.com/mysql/mysql-data-types.html
在这里插入图片描述


2 字符类型

类型 说明 N的含义 是否有字符集 最大长度
CHAR(N) 定长字符 字符 255
VARCHAR(N) 变长字符 字符 16384
BINARY(N) 定长二进制字节 字节 255
VARBINARY(N) 变长二进制字节 字节 16384
TINYBLOB(N) 二进制大对象 字节 256
BLOB(N) 二进制大对象 字节 16K
MEDIUMBLOB(N) 二进制大对象 字节 16M
LONGBLOB(N) 二进制大对象 字节 4G
TINYTEXT(N) 大对象 字节 256
TEXT(N) 大对象 字节 16K
MEDIUMTEXT(N) 大对象 字节 16M
LONGTEXT(N) 大对象 字节 4G

强调两点内容:

  • 至少从mysql5.7开始CHAR(N)和VARCHAR(N)中N都是指的字符长度。

因此假如有人问你char数据类型长度为1时能否存储一个汉字 —> 你要斩钉截铁的说至少在mysql5.7及以后能

  • mysql的字符集不是基于表的,更不是基于数据库的,而是基于列的 —> 同时应该知道,建立数据库时可以指定字符集和排序规则,建表时也可以指定,建立表中的字段时也可以指定(如下面的图所示) —> 也就是说假如你数据库层面指定了,建表和建字段时如果不特殊指定就会默认使用建库时指定的;建表时如果指定了,字段如果不特殊指定,就默认使用建表时指定的。

(1) 建立数据库时可以指定字符集和排序规则

在这里插入图片描述

(2) 建表时也可以指定字符集和排序规则

在这里插入图片描述

(3)在列上也可以指定字符集和排序规则

在这里插入图片描述

简单说下排序规则

  • _ci结尾表示大小写不敏感(caseinsensitive)
  • _cs表示大小写敏感(case sensitive)
  • _bin表示二进制的比较(binary)

比如utf8时,就有这么多排序规则 —> 我所在的项目组基本都使用utf8_general_ci
在这里插入图片描述


3 日期类型

日期类型 占用空间 表示范围
DATETIME 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
DATE 3 1000-01-01 ~ 9999-12-31
TIMESTAMP 4 1970-01-01 00:00:00UTC ~ 2038-01-19 03:14:07UTC
YEAR 1 YEAR(2):1970-2070, YEAR(4):1901-2155
TIME 3 -838:59:59 ~ 838:59:59

或如下(摘自: https://www.runoob.com/mysql/mysql-data-types.html):
在这里插入图片描述

  • 注意: timestamp 是区分时区的,但datetime不会,可以用下面的语句证明:
-- datatime与timestamp区别
create table test_time(a timestamp, b datetime);
insert into test_time values (now(), now()); 

select * from test_time;  -- 此时查询数据一样

select @@time_zone;  --设置时区
set time_zone='+00:00';
select * from test_time;  --此时不一样了
发布了204 篇原创文章 · 获赞 231 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/nrsc272420199/article/details/104661179