怎样做网站seo优化杭州互助盘网站开发
文章目录
- 1 常见的数据类型
 - 2 整数类型
 - 2.1 属性 M
 - 2.2 属性 UNSIGNED
 - 2.3 属性 ZEROFILL
 - 2.4 整数类型的适用场景
 
- 3 浮点类型
 - 4 定点类型
 - 5 位类型
 - 6 日期与时间类型
 - 6.1 YEAR 类型
 - 6.2 DATE 类型
 - 6.3 TIME 类型
 - 6.4 DATETIME 类型
 - 6.5 TIMESTAMP 类型
 
1 常见的数据类型
| 类型 | 类型分类 | 
|---|---|
| 整数类型 | TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT | 
| 浮点类型 | FLOAT、DOUBLE | 
| 定点数类型 | DECIMAL | 
| 位类型 | BIT | 
| 日期时间类型 | YEAR、TIME、DATE、DATETIME、TIMESTAMP | 
| 文本字符串类型 | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT | 
| 枚举类型 | ENUM | 
| 集合类型 | SET | 
| 二进制字符串类型 | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB | 
| JSON类型 | JSON对象 JSON数组 | 
2 整数类型
整数类型一共有 5 种:
 包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT
| 整数类型 | 字节 | 有符号数取值范围 | 无符号数取值范围 | 
|---|---|---|---|
| TINYINT | 1 | -128 - 127 | 0-255 | 
| SMALLINT | 2 | -32768 - 32767 | 0-65535 | 
| MEDIUMINT | 3 | -8388608 - 8388607 | 0-16777215 | 
| INT | 4 | -2147483648 - 2147483647 | 0-4294967295 | 
| BIGINT | 8 | -9223372036854775808 - 9223372036854775808 | 0-18446744073709551615 | 
2.1 属性 M
在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。M表示显示宽度,M的取值范围是(0, 255)
 int(3)、int(4)、int(8) 在磁盘上都 是占用 4 bytes 的存储空间。
 int(5):当数据宽度小于5位的时候在数字前面需要用 字符填满宽度。该项功能需要配合“ ZEROFILL ”使用,表示用“0”填满宽度,否则指定显示宽度无效
2.2 属性 UNSIGNED
无符号类型(非负),所有的整数类型都有一个可选的属性UNSIGNED(无符号属性),
 无符号整数类型的最小取值为0。所以,如果需要在MySQL数据库中保存非负整数值时,可以将整数类型设 置为无符号类型。
int类型默认显示宽度为int(11),无符号int类型默认显示宽度为int(10)
2.3 属性 ZEROFILL
ZEROFILL即 0 填充,如果某列是ZEROFILL,那么MySQL会自动为当前列添加UNSIGNED属性,
 如果指定了ZEROFILL只是表示不够M位时,用0在左边填充,
 如果超过M位,只要不超过数据存储范围即可。
当使用ZEROFILL时,会自动添加UNSIGNED
2.4 整数类型的适用场景
| 整数类型 | 使用场景 | 
|---|---|
| TINYINT | 一般用于枚举数据 | 
| SMALLINT | 一般用于较小范围内的数据统计 | 
| MEDIUMINT | 一般用于较大整数的计算 | 
| INT | 一般使用的范围比较大,使用频率比较高 | 
| BIGINT | 一般用于超大型数据的处理 | 
3 浮点类型
| 类型 | 有符号数取值范围 | 无符号数取值范围 | 字节占用数 | 
|---|---|---|---|
| FLOAT | ±3.4∗10^38 | 0 - +3.4∗10^38 | 4 | 
| DOUBLE | ±1.7∗10^308 | 0 - +1.7∗10^308 | 8 | 
对于浮点类型来说,单精度存储需要4个字节,双精度存储需要8个字节
- FLOAT (M,D) 或者 DOUBLE(M,D),M称为精度,D称为标度
 - M = 整数位+小数位, D = 小数位
 - 取值范围 : 0<=M<=255 , 0<=D<=30
 - FLOAT和DOUBLE不指定(M,D)时,默认按照实际的精度来显示
 - 从MySQL 8.0.1开始,FLOAT(M,D),DOUBLE(M,D)的用法在官方文档中不推荐使用
 
4 定点类型
| 类型 | 字节 | 范围 | 
|---|---|---|
| DECIMAL | M+2 | 有效范围由 M 和 D 决定 | 
- 使用 DECIMAL(M,D) 的方式表示高精度小数。其中,M被称为精度,D被称为标度。0<=M<=65, 0<=D<=30,D < M
 - DECIMAL(M,D)的最大取值范围与DOUBLE类型一样,但是有效的数据范围是由M和D决定的。 DECIMAL 的存储空间并不是固定的,由精度值M决定,总共占用的存储空间为M+2个字节
 - 定点数在MySQL内部是以 字符串 的形式进行存储,这就决定了它一定是精准的
 - 当DECIMAL类型不指定精度和标度时,其默认为DECIMAL(10,0)。当数据的精度超出了定点数类型的 精度范围时,则MySQL同样会进行四舍五入处理
 
5 位类型
BIT类型中存储的是二进制值,类似010110
| 二进制字符串类型 | 长度 | 长度范围 | 
|---|---|---|
| BIT | M | 1<=M<=64 | 
- BIT类型,如果没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。这里(M)是表示二进制的位数,位数最小值为1,最大值为64
 
6 日期与时间类型
| 类型 | 名称 | 字节 | 日期格式 | 最大值 | 最小值 | 
|---|---|---|---|---|---|
| YEAR | 年 | 1 | YYYY或YY | 1901 | 2155 | 
| TIME | 时间 | 3 | HH:MM:SS | -838:59:59 | 838:59:59 | 
| DATE | 日期 | 4 | YYYY-MM-DD | 1001-01-01 | 9999-12-31 | 
| DATETIME | 日期时间 | 8 | YYYY-MM-DD HH:MM:SS | 1001-01-01 00:00:00 | 9999-12-31 23:59:00 | 
| TIMESTAMP | 日期时间 | 4 | YYYY或YY | 1901 | 2155 | 
6.1 YEAR 类型
YEAR 类型用来表示年份,在所有的日期时间类型中所占用的存储空间最小,只需要 1 个字节 的存储空间
 在MySQL中,以4位字符串或者数字格式表示YEAR类型,其格式为YYYY,最小值为1901,最大值为2155
