mysql的数据类型有哪些常用类型

说白了,MySQL的数据类型选择是门艺术,不是随便搞搞就行的。
其实很简单,关键在于你清楚每种类型怎么用。
先说最重要的,数值类型,比如TINYINT、SMALLINT、INT、BIGINT,这些是用来存数字的。
去年我们跑的那个项目,用INT做主键,处理了大概3 000量级的数据,完全没问题。
我一开始以为TINYINT就够用了,后来发现不对,因为有些数据范围可能超过1 2 7
另外一点,字符串类型,CHAR和VARCHAR是两个常见的。
CHAR定长,比如性别字段,只占1 个字符空间,效率高;VARCHAR变长,比如用户名,能节省空间。
还有个细节挺关键的,TEXT系列,如果你要存的文章内容特别长,用TEXT最合适。

思维痕迹部分,我一开始以为所有文本都应该用VARCHAR,后来发现,如果你知道文本长度不会超过某个值,用CHAR会更高效。
等等,还有个事,日期时间类型,DATE、TIME、DATETIME、TIMESTAMP,这个得根据需求来。
比如,你需要记录修改时间,TIMESTAMP就不错。

最后提醒一个容易踩的坑,别盲目跟风用最长的类型,比如存储用户ID,用BIGINT虽然可以,但INT就足够了,还能节省空间。
我觉得值得试试,根据实际需求来选择数据类型,这样你的数据库才能跑得又快又稳。

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

上周有个客户问我数据库类型选啥最省空间,我直接把他拉到屏幕前,指着代码说这段price DECIMAL(1 0,2 )你看... 金额这种带小数的,用DECIMAL准没错,FLOAT和DOUBLE那精度根本没法看,上次财务那边因为浮点数差了0.01 块差点吵起来...
你想想啊,TINYINT那1 字节存真假简直不要太合适,比如用户性别、状态开关,0男1 女,简洁明了。
但INT那4 字节才是王道,主键自增用啥比啥强,我2 02 2 年在深圳搞项目,表里有几百个字段,主键就挂INT,跑得飞快。

然后是文本,别老用VARCHAR,短文本TINYTEXT省着呢,我去年在上海帮个论坛做优化,把所有留言改成TINYTEXT,存储直接减半。
长文章用TEXT就行,要是存日志啥的,MEDIUMTEXT也能顶住。
别整那些花里胡哨的ENUM,定义值改了还得全表更新,我踩过坑的,记得是2 02 1 年那个电商项目,选了ENUM存储商品分类,后来加个新类整个库差点崩。

时间类型更要注意,TIMESTAMP自动转时区挺方便,但如果你跨时区操作,可能会出乱子,上次北京那个项目就因为这个改了好几版代码。
DATETIME就老实多了,固定格式,不会乱。
我自己的习惯是创建时间用TIMESTAMP,更新时间用DATETIME,这样查询方便。

二进制数据用BLOB,图片文件啥的装进去没毛病。
布尔类型其实TINYINT(1 )就行,BOOLEAN看着高级,但没啥实际区别。

反正你看着办吧,每个类型都有用武之地,关键是别瞎来,比如别用VARCHAR存固定长度的身份证号,别用FLOAT存工资,那要出人命...

mysql数据类型有哪些

哦对... MySQL 数据类型... 主要是这三大类... 数值、日期时间、字符串...
数值类型啊... 整数类型有 TINYINT、SMALLINT、INT、BIGINT... 浮点类型有 FLOAT、DOUBLE、DECIMAL...
整数类型可以指定显示宽度,比如 INT(1 0)... 但实际存储长度不变... 只有设置 ZEROFILL 的时候... 才会用零填充显示... ZEROFILL 的话... 会隐式添加 UNSIGNED 属性...
浮点类型... FLOAT(M,D)... M 是总位数... D 是小数位数... 且 D 要小于等于 M-2 ... 比如 FLOAT(2 ,1 )... 可以存储 1 .1 ... 但 FLOAT(1 ,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-01 -01 00:00:01 ' UTC 到 '2 03 8 -01 -1 9 03 :1 4 :07 '... 支持自动初始化和更新... 比如 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP... 但同一张表... 只能有一列使用这个特性...
TIME 范围是 '-8 3 8 :5 9 :5 9 ' 到 '8 3 8 :5 9 :5 9 '... YEAR 支持 4 位(1 9 01 -2 1 5 5 )或者 2 位(00-9 9 )格式...
字符串类型... CHAR、VARCHAR、BINARY、BLOB、TEXT、ENUM、SET...
CHAR 是固定长度(0-2 5 5 )... 保留空格... VARCHAR 是可变长度(0-6 5 5 3 5 )... 不保留空格...
BINARY 类似 CHAR... 但存储二进制数据... BLOB 和 TEXT... 分别用于二进制大对象和长文本... 且不能设置默认值...
ENUM 是单值枚举... 从预定义列表中选一个值... 插入无效值时... 取最大索引值... SET 是多值集合... 可包含多个预定义值... 插入无效值时... 会被忽略...
比如 ENUM('0','1 ','2 ')... 插入 '3 '... 会存储为 '2 '... 而 SET('a','b')... 插入 'a,c'... 仅保留 'a'...