mysql数据类型有哪些

数值类型有两种类型:整数和浮点数。

整数类型有好几种,TINYINT、SMALLINT、INT、BIGINT,听起来挺大的。
示例:INT(1 0),括号中的 1 0 是多少?这是因为显示宽度的原因,而不是因为它不能存储1 0个数字。
实际节省的金额与此无关;显示时它只是用零填充。
使用ZEROFILL时,会自动添加一个UNSIGNED属性,但不能保存负数。

浮点数包括FLOAT、DOUBLE和DECIMAL。
FLOAT(M,D),M为总位数,D为小数点后位数。
请记住,D 不能大于 M 减 2 例如,FLOAT(2 ,1 ) 可以存储 1 ,1 FLOAT(1 ,2 ) 是错误的,为什么? D 不能大于 M 减 2 DECIMAL 适用于金融数据,并且精确地用于货币计算。

日期和时间类型包括DATETIME、DATE、TIMESTAMP、TIME和YEAR。
DATETIME 范围为“1 000-01 -01 00:00:00”至“9 9 9 9 -1 2 -3 1 2 3 :5 9 :5 9 ”。
DATE 仅包含日期“1 000-01 -01 ”到“9 9 9 9 -1 2 -3 1 ”。
TIMESTAMP 是一个奇怪的东西。
计数从 1 9 7 0 年 1 月 1 日 00:00:01 UTC 开始,直至 2 03 8 年 1 月 1 9 日 03 :1 4 :07 为止。
有一个特殊的技巧,自动初始化和更新。
例如,如果设置DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,则该列在插入数据时会自动填写当前时间,在更新时会自动更改时间。
但是,同一表中只能使用一列。
TIME 存储从“00:00:00”到“2 3 :5 9 :5 9 ”的时间。
YEAR 支持从 1 9 01 到 2 1 5 5 的 4 位数字或从 00 到 9 9 的 2 位数字。

字符串类型,CHAR、VARCHAR、BINARY、BLOB、TEXT、ENUM、SET。
CHAR的长度固定为0到2 5 5 个字符,空格也占用空间。
VARCHAR 的长度可变,范围为 0 到 6 5 5 3 5 个字符。
如果在空格前添加空格,则会将其删除。
BINARY 与 CHAR 类似,但存储二进制数据。
BLOB和TEXT,BLOB存储二进制大对象,TEXT存储长文本。
这两个不能设置默认值。
ENUM 是一种枚举类型。
从预定义列表中选择一个值,插入一个不在列表中的值,并将其保存为列表中的最后一个。
SET 是一个多值集合。
您可以选择多个预定义值。
如果您输入无效值,它将被忽略。
例如,如果您输入 ENUM('0','1 ','2 ') 作为 '3 ',它将存储为 '2 '。
SET('a','b'),如果插入'a,c',则只保存'a'。

mysql数据库中数据类型有哪些

上周,一位客户要求我选择数据库类型。
我很困惑,因为它非常复杂。
不过这几天我一直在整理我的笔记,所以我可以给你看一下。

看这段话,比较全面,类别也比较清晰。
但上次遇到陷阱,分不清INT和BIGINT的区别,保存ID的时候就炸了。
我记得2 02 3 年我在上海的一个购物中心做一个项目。
用户量一上来系统就报错。
我查了很久,发现INT范围不够。
所以主键的选择实际上取决于大小。

看看这些类型: 1 . 整数中,INT为4 个字节,通常足够了。
但对于你提到的分布式ID,最好使用BIGINT。
我以前在北京做一个电商项目,直接使用MySQL的自增ID作为分布式ID。
结果后来扩容的时候还得改,很麻烦。
如果估计数量,建议尽快使用BIGINT。
2 . 谨慎使用浮点数,尤其是科学记数法的浮点数。
我有一个朋友,2 02 2 年在深圳金融系统工作,他用FLOAT存入金额,结果却是金额四舍五入到小数点后两位,客户直接找上门来。
现在金融行业推荐DECIMAL,至少是准确的。
3 .在字符串类型中,记住CHAR和VARCHAR的区别。
对于性别等固定两个值,使用CHAR(1 )可以节省空间。
上次创建活动表的时候,本来想用VARCHAR来存储活动状态,但是发现padding对性能影响不小,所以最终改用了CHAR(1 )。
我通常根据需要使用TEXT系列。
例如,MEDIUMTEXT 对于用户配置文件来说就足够了。
4 、日期类型中TIMESTAMP自动时区转换很方便,但是容易出错。
2 02 1 年我在杭州做一个项目,由于开发环境的时区与线上时区不一致,导致时间戳乱跳,差点无法调试。
建议所有重要系统都使用DATETIME。
5 . JSON类型现在被广泛使用,特别是在微服务架构中。
我在广州做项目时,日志采用JSON格式存储,查询效率比拆分成多列高很多。

建议您选择类型:
金额必须为小数
使用 TINYINT 或 ENUM 表示状态
文本内容按长度选择
时间根据场景而定,使用TIMESTAMP进行高频更新
对图像文件使用BLOB
还有一个陷阱,即MySQL 5 .7 之前的版本没有JSON支持。
如果您使用的是旧版本,请谨慎使用此类型。
2 02 2 年我在成都做一个项目,因为客户用的是5 .6 ,所以最后把JSON改成了VARCHAR。

无论如何,类型的选择一定要根据实际场景而定。
如果不确定,首先向业务方询问数据大小和运行频率,然后结合系统的运行环境。
一般来说,你不会出错。

一文搞懂MySQL的数据类型中长度的含义

CHAR(n) 是固定长度的空格。
VARCHAR(n)是可变长度,存储长度信息。
显示格式INT(n),不占用存储空间。
DECIMAL(M,D) 共有 M 位小数位和 D 位小数位。
FLOAT 设置为 4 字节。
DOUBLE 设置为 8 字节。
明白了就去做,不要心急。