—-数据类型篇
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TINYINT | 1 | 有符号-128 无符号 0 | 有符号 128 无符号 255 |
SMALLINT | 2 | 有符号-32768 无符号 0 | 有符号 32768 无符号 65535 |
MEDIUMINT | 2 | 有符号-8388608 无符号 0 | 有符号 8388607 无符号 1677215 |
INT\INTEGER | 4 | 有符号-2147483648 无符号 0 | 有符号 2147483647 无符号 4294967295 |
BIGINT | 8 | 有符号-9223372036854775808 无符号 0 | 有符号 9223372036854775807 无符号 18446744073709551615 |
在整数类型中共有上述几种类型,如果超出类型范围的操作,会发生”OUT OF RANGE”的错误。
1 | # 创建一个测试表,int 默认长度是10 |
这样我们就可以直观的看到数据的长度
接下来我们尝试添加超过约束长度限制的数据
insert into t1 values(1,1111111)
1 | +------------+---------+ |
有些奇怪的是 id2 中的数据既没有被截断也没有报错。这是因为使用了我们使用了 zerofill,而 zerofill 会自动添加 unsigned 属性。
整数类型还有另外一个属性 AUTO_INCREMENT。在需要产生唯一标识符或顺序值时,可使用此属性,这个属性只用于整数类型。AUTO_INCREMENT 值一般从 1 开始,每行增加 1。在插入 NULL 或一个已有的整数时会自动填充当前列最大值+1。一个表中最多一个字段有 AUTO_INCREMENT 属性,对于任意想使用 AUTO_INCREMENT 的属性都应该添加 NOT NULL 约束,并定义为 PRIMARY KEY 或定义为 UNIQUE 键。
1 | create table AI |
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
FLOAT | 4 | ±1.175494351E-38 | ±3.402823466E+38 |
DOUBLE | 8 | ±2.2250738585072014E-308 | ±1.7976931348623157E+308 |
定点数类型 | 字节 | 描述 |
---|---|---|
DEC(M,D)/DECIMAL(M,D) | M+2 | 最大取值范围与 DOUBLE 相同,给定 DECIMAL 的有效取值范围由 M 和 D 决定 |
MySQL 有两种表示小数的方式:浮点数和定点数。其中定点数在 MySQL 内部以字符串形式存放,比浮点数更精准,适合用来表示货币等精度高的数据。
浮点数和定点数都使用(M,D)的方式来进行表示。M 表示一共显示 M 位小数(整数位+小数位)
,其中 D 位位于小数点后面,M 和 D 又称为精度和标度。其中 decimal 不指定精度的时候默认精度位 10,标度位 0。float 和 double 在不指定默认的长度时会按照实际的精度来进行设置。
1 | # 正常插入 |
位类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
BIT(M) | 1~8 | BIT(1) | BIT(64) |
对于 BIT 类型,用于存放位字段值,BIT(M)可以用来存放多位二进制数,如果不写则默认为 1.对于位字段,直接使用 SELECT 命令将不会看到结果,可以用 bin(),或者 hex()函数来进行读取。
1 | # 添加一个bit字段 |