【MySQL】近2万字,138张图解,我终于把mysql总结完整了,建议收藏(11)


下面是所有数据类型的汇总
整数在整数类型中 , 按照取值范围和存储方式的不同 , 分为

  • TINYINT, 占用 1 字节
  • SMALLINT , 占用 2 字节
  • MEDIUMINT , 占用 3 字节
  • INT、INTEGER , 占用 4 字节
  • BIGINT , 占用 8 字节
五个数据类型 , 如果超出类型范围的操作 , 会发生错误提示 , 所以选择合适的数据类型非常重要 。
还记得我们上面的建表语句么
我们一般会在 SQL 语句的数据类型后面加上指定长度来表示数据类型许可的范围 , 例如
int(7)

表示 int 类型的数据最大长度为 7 , 如果填充不满的话会自动填满 , 如果不指定 int 数据类型的长度的话 , 默认是 int(11) 。
我们创建一张表来演示一下
create table test1(aId int bId int(5));

/* 然后我们查看一下表结构 */
desc test1;

整数类型一般配合 zerofill 来使用 , 顾名思义 , 就是用 0 进行填充 , 也就是数字位数不够的空间使用 0 进行填充 。
分别修改 test1 表中的两个字段
alter table test1 modify aId int zerofill;

alter table test1 modify bId int(5) zerofill;

然后插入两条数据 , 执行查询操作
如上图所示 , 使用zerofill 可以在数字前面使用 0 来进行填充 , 那么如果宽度超过指定长度后会如何显示?我们来试验一下 , 向 aId 和 bId 分别插入超过字符限制的数字
会发现 aId 已经超出了指定范围 , 那么我们对 aId 插入一个在其允许范围之内的数据
会发现 , aId 已经插进去了 , bId 也插进去了 , 为什么 bId 显示的是 int(5) 却能够插入 7 位长度的数值呢?
所有的整数都有一个可选属性 UNSIGNED(无符号) , 如果需要在字段里面保存非负数或者是需要较大上限值时 , 可以使用此选项 , 它的取值范围是正常值的下限取 0, 上限取原值的 2 倍 。 如果一个列为 zerofill, 会自动为该列添加 UNSIGNED 属性 。
除此之外 , 整数还有一个类型就是 AUTO_INCREMENT , 在需要产生唯一标识符或者顺序值时 , 可利用此属性 , 这个属性只用于整数字符 。 一个表中最多只有一个 AUTO_INCREMENT 属性 , 一般用于自增主键 , 而且 NOT NULL , 并且是 PRIMARY KEY 和 UNIQUE 的 , 主键必须保证唯一性而且不为空 。
小数小数说的是啥?它其实有两种类型;一种是浮点数类型 , 一种是定点数类型;
浮点数有两种
  • 单精度浮点型 - float 型
  • 双精度浮点型 - double 型
定点数只有一种 decimal 。 定点数在 MySQL 内部中以字符串的形式存在 , 比浮点数更为准确 , 适合用来表示精度特别高的数据 。
浮点数和定点数都可以使用 (MD) 的方式来表示 , M 表示的就是 「整数位 + 小数位」 的数字 , D 表示位于 . 后面的小数 。 M 也被称为精度, D 被称为标度 。
下面通过示例来演示一下
首先建立一个 test2 表
CREATE TABLE test2 (aId float(62) default NULL bId double(62) default NULLcId decimal(62) default NULL)

然后向表中插入几条数据
insert into test2 values(1234.121234.121234.12);

这个时候显示的数据就是
然后再向表中插入一些约束之外的数据
insert into test2 values(1234.1231234.1231234.123);

发现插入完成后还显示的是 1234.12 , 小数位第三位的值被舍去了 。