数据类型分类
为什么要存在数据类型呢?
mysql中存在数据类型主要是为了以下两点
- 数据类型决定了自己需要多少的空间以及系统会给你分配多少的空间 数据库作为一个要使用磁盘空间的工具 数据类型的存在是必要的
- 类型是一种约束 只允许向数据库插入合法的数据
mysql中常见的数据类型如下图:
数值类型
类型 | 字节 | 最小值 | 最大值 |
TINYINT(无符号) | 1 | 0 | 255 |
TINYINT(有符号) | 1 | -128 | 127 |
INT(无符号) | 4 | 0 | 4294967295 |
INT(有符号) | 4 | -2147483648 | 2147483647 |
BIGINT(无符号) | 8 | 0 | 18446744073709551615 |
BIGINT(有符号) | 8 | -9223372036854775808 | 9223372036854775807 |
tinyint类型越界测试
我们首先创建一张表 里面有tinyint数据类型的一列
之后我们往这一列中插入数据
我们发现 数据如果在tinyint的最小值与最大值之间则可以插入 如果不在这个范围则mysql直接报错
通过上面的现象我们也能很好的解释约束这一概念 即只允许插入合法的数据
bit类型
语法
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
实例:
我们尝试向t1这个表中插入两个数据
观察插入后的现象我们可以发现 int类型的数据可以正常插入 但是bit类型的数据显示的却十分奇怪
其实这些数据就是对应的ascll码值
也就是说对应bit类型的数据 在数据库表中会显示的是ascll码值
使用场景
当我们只需要使用0和1来标志一个值的时候我们可以定义bit(1)
小数类型
float类型
语法
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
实例
float(4,2)表示的范围是-99.99 ~ 99.99 MySQL在保存值时会进行四舍五入 即 99.994为99.99 99.995为100.00
下面的试验会验证上面所说的话
我们首先创建一个员工工资表 里面有员工的编号还有他们的薪水
接着我们往表中插入几组数据
我们可以发现salary的数据被限制在了-99.99 ~ 99.99之间 更准确的说是-99.994 ~ 99.994之间
如果我们将float限制为无符号数数据的范围会发生什么变化呢?
插入数据后我们可以发现
此时我们插入正值 0 ~ 99.994仍然可以成功 但是插入负值便会报错了
decimal类型
decimal类型与float类型的用法和特性基本相同
唯一一点需要我们注意的是decimal的精度要比float类型的精度高(float类型的精度大概为小数点后七位)
下面是试验证明
我们可以发现 当我们存储12.12345678这个数字的时候 decimal的数据能够正常储存 而floact类型的数据却失真了
所以说当我们想要存储小数点后更加精确的数字时我们可以使用decimal类型的数据