[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】
你看到的这个文章来自于http://www.cnblogs.com/ayanmw
转载自:http://blog.csdn.net/daydreamingboy/article/details/6310907
分析MySQL数据类型的长度
MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:
(1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。
(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:
mysql> create table test(id int(3) zerofill); Query OK, 0 rows affected (0.09 sec) mysql> insert into test(id) values(1),(1234); Query OK, 2 rows affected (0.06 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test; +------+ | id | +------+ | 001 | | 1234 | +------+ 2 rows in set (0.00 sec)
可以看出,id的显示宽度为3,不足的左边补0,数据长度超过的则原样输出。如果没有zerofill,则看不出显示宽度,没有前导零。
(3)FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9。过程如下
mysql> alter table test add realnum decimal(4,1); Query OK, 2 rows affected (0.03 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into test(id,realnum) values(2,1234); Query OK, 1 row affected, 1 warning (0.05 sec) mysql> select * from test; +------+---------+ | id | realnum | +------+---------+ | 001 | NULL | | 1234 | NULL | | 002 | 999.9 | +------+---------+ 3 rows in set (0.02 sec)
附录 常见MySQL数据类型(留作备忘)
类 型 |
大 小 |
描 述 |
CAHR(Length) |
Length字节 |
定长字段,长度为0~255个字符 |
VARCHAR(Length) |
String长度+1字节或String长度+2字节 |
变长字段,长度为0~65 535个字符 |
TINYTEXT |
String长度+1字节 |
字符串,最大长度为255个字符 |
TEXT |
String长度+2字节 |
字符串,最大长度为65 535个字符 |
MEDIUMINT |
String长度+3字节 |
字符串,最大长度为16 777 215个字符 |
LONGTEXT |
String长度+4字节 |
字符串,最大长度为4 294 967 295个字符 |
TINYINT(Length) |
1字节 |
范围:-128~127,或者0~255(无符号) |
SMALLINT(Length) |
2字节 |
范围:-32 768~32 767,或者0~65 535(无符号) |
MEDIUMINT(Length) |
3字节 |
范围:-8 388 608~8 388 607,或者0~16 777 215(无符号) |
INT(Length) |
4字节 |
范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号) |
BIGINT(Length) |
8字节 |
范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号) |
FLOAT(Length, Decimals) |
4字节 |
具有浮动小数点的较小的数 |
DOUBLE(Length, Decimals) |
8字节 |
具有浮动小数点的较大的数 |
DECIMAL(Length, Decimals) |
Length+1字节或Length+2字节 |
存储为字符串的DOUBLE,允许固定的小数点 |
DATE |
3字节 |
采用YYYY-MM-DD格式 |
DATETIME |
8字节 |
采用YYYY-MM-DD HH:MM:SS格式 |
TIMESTAMP |
4字节 |
采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年 |
TIME |
3字节 |
采用HH:MM:SS格式 |
ENUM |
1或2字节 |
Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一 |
SET |
1、2、3、4或8字节 |
与ENUM一样,只不过每一列都可以具有多个可能的值 |
参考资料:http://blog.csdn.net/reanimation1/archive/2008/08/26/2833327.aspx
mysql查看表的结构的mysql语句为:
mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名; use information_schema; select * from columns where table_name='表名'; 顺便记下: show databases; --显示数据库列表 use 数据库名; --设置为当前工作数据库 show tables; --显示当前工作数据库 下的表 列表 原有一unique索引AK_PAS_Name(PAC_Name)在表tb_webparamcounter中, 执行以下sql修改索引 alter table tb_webparamcounter drop index AK_PAS_Name; alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name); 若发现索引的逻辑不对,还需要再加一个字段进去,执行 alter table tb_webparamcounter drop index AK_PAS_Name; alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name,PAC_Value); 注意:这时的PC_ID,PAC_Name,PAC_Value三个字段不是FOREIGN KEY 否则必需先drop FOREIGN KEY,再重做上一步才行 顺便提下oracle select * from v$database; select * from all_users; select * from user_tables;
转载请注明出处:http://www.cnblogs.com/ayanmw 我会很高兴的!
------------------------------------------------------------------------------------------------
一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!