mysql数据类型

数据类型的作用
1:减少出错率
2:加快运算速度
定义字符里面的数值表示的意思
比如
id int(10) 表示id能够存储最多10位数值,比如说可以使1234567890这些数值是可以存储进id里面的,但是如果在多加一位这个数字就存储不进这个id里面了,所以表示的是10那么只能存储1234567890这么多位,多一位都是存储不进去的,表示的数据的长度,不是存储空间

create table okdata(fti tinyint,fsi smallint,fmi mediumint,fi int,fbi bigint);
mysql> desc okdata;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| fti | tinyint(4) | YES | | NULL | |
| fsi | smallint(6) | YES | | NULL | |
| fmi | mediumint(9) | YES | | NULL | |
| fi | int(11) | YES | | NULL | |
| fbi | bigint(20) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
insert into okdata values(123456789,123456789,123456789,123456789,123456789);
+------+-------+---------+-----------+-----------+
| fti | fsi | fmi | fi | fbi |
+------+-------+---------+-----------+-----------+
| 127 | 32767 | 8388607 | 123456789 | 123456789 |
+------+-------+---------+-----------+-----------+
上面是查询的结果
tinyint 小整型 最大只能是127

show warnings; 查看告警信息
5.6.26以后版本上面的插入语句不能执行成功,会直接报错,严谨性好很多


不严谨2
create table ckdata2(age tinyint);
insert into ckdata2 values('hello');
创建一个整型的表格,但是插入的时候是字符串,执行的结果依然是将字符串插入进去了,这样就直接表示这个mysql的不严谨性

unsigned 表示的是无符号整数,显示的是正整数
zerofill 表示的就是一个正数


mysql> desc ckdata3;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| fi | int(11) | YES | | NULL | |
| fiu | int(10) unsigned | YES | | NULL | |
| fiz | int(10) unsigned zerofill | YES | | NULL | |
| fiuz | int(10) unsigned zerofill | YES | | NULL | |
+-------+---------------------------+------+-----+---------+-------+


mysql> select * from azerofill;
+------------+------------+------------+
| fi | fiz | fiuz |
+------------+------------+------------+
| 11 | 011 | 0011 |
| 123456 | 123456 | 123456 |
| 2147483647 | 4294967295 | 4294967295 |
+------------+------------+------------+
设置值的时候如果是无符号零填充,则把所有的值都变成正数的,否则会有一半变成负数的

浮点型
主要有float<单精度>, double<双精度>,decimal<精确指定>
Float和double是浮点型,数值越大越不精确
Decimal是定点数,常用来存储财务工资方面,高精度

binary修饰符:区分字符大小,比较char类型以一个二进制方式起作用

 

新版本安装默认是InnoDB引擎,老版本是MYISAM引擎

多碎片会影响MyISAM引擎的处理速度,占用磁盘空间
InnoDB

TEXT类型
长文本类型,主要用于帖子,文章,评论之类的,增强版的字符串,可以看成是varchar的增长版本

 

posted on 2016-11-12 18:33  zyg001  阅读(110)  评论(0编辑  收藏  举报