【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 日期类型

日期类型占用空间表示范围
DATETIME81000-01-01 00:00:00 ~ 9999-12-31 23:59:59
DATE31000-01-01 ~ 9999-12-31
TIMESTAMP41970-01-01 00:00:00UTC ~ 2038-01-19 03:14:07UTC
YEAR1YEAR(2):1970-2070, YEAR(4):1901-2155
TIME3-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;  --此时不一样了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值