共计 1960 个字符,预计需要花费 5 分钟才能阅读完成。
关于 MySQL 数据类型的一些笔记。
一、整型
整型的每一种都有无符号(unsigned)和有符号(signed)两种类型。
MySQL 数据类型 | 含义 |
tinyint(m) | 1 个字节表示:signed(-128~127);unsigned(0~255) |
smallint(m) | 2 个字节表示:signed(-32768~32767);unsigned(0~65535) |
mediumint(m) | 3 个字节表示:signed(-8388608~8388607);unsigned(0~16777215) |
int(m) | 4 个字节表示:signed(-2147483648~2147483647);unsigned(0~4294967295) |
bigint(m) | 8 个字节表示:signed(-2^63 (-9223372036854775808) ~ 2^63-1 (9223372036854775807));unsigned(0~18446744073709551615) |
二、浮点型
MySQL 数据类型 | 含义 |
float(m,d) | 单精度浮点型,8 位精度(4 字节),m 是十进制数字的总个数,d 是小数点后面的数字个数 |
double(m,d) | 双精度浮点型,16 位精度(8 字节) |
三、定点数
decimal(m,d) 定点类型:浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数 m 是定点类型数字的最大个数(精度),范围 0~65,d 为小数点右侧数字的个数,范围为 0~30. 但不能超过 m。
对定点数计算能精确 65 位数字。
四、字符串
MySQL 数据类型 | 含义 |
char(n) | 固定长度的字符串,最多 255 个字符 |
varchar(n) | 固定长度的字符串,最多 65535 个字符 |
tinytext | 可变长度字符串,最多 255 个字符 |
text | 可变长度字符串,最多 65535 个字符 |
mediumtext | 可变长度字符串,最多 2 的 24 次方 - 1 个字符 |
longtext | 可变长度字符串,最多 2 的 32 次方 - 1 个字符 |
char 和 varchar:
- 都可以通过指定 n 来限制存储的最大字符数长度,char(20) 和 varchar(20) 将最多只能存储 20 个字符,超过的字符将会被截掉。n 必须小于该类型允许的最大字符数
- char 类型指定了 n 之后,如果存入的字符数小于 n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以 char 类型存储的字符串末尾不能有空格,varchar 不受此限制
- 内部存储的机制不同。char 是固定长度,char(4) 不管是存 1 个字符、2 个字符或者 4 个字符(英文的),都将占用 4 个字节。varchar 是存入的实际字符数 + 1 个字节(n<=255)或 2 个字节(n>255),所以,varchar(4) 存入一个字符将占用 2 个字节,2 个字符占用 3 个字节,4 个字符占用 5 个字节
- char 类型的字符串检索速度要比 varchar 类型快
varchar 和 text:
- 都是可变长度的,最多能存储 65535 个字符
- varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 + 1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 + 2 个字节
- text 类型不能有默认值
- varchar 可直接创建索引,text 创建索引要指定前多少个字符,查询速度 varchar 要快于 text
五、二进制数据
xxxblob 和 xxxtext 是对应的,不过存储方式不同。xxxtext 是以文本方式存储的,如果存储英文,应区分大小写;而 xxxblob 是以二进制方式存储的,不区分大小写。
xxxblob 存储的数据只能整体读出。
xxxtext 可以指定字符集,xxxblob 不能指定字符集
六、日期时间类型
MySQL 数据类型 | 含义 |
date | 日期,如 ’2016-12-12′ |
time | 时间,如 ’22:22:22′ |
datetime | 日期 + 时间,如 ’2016-12-12 22:22:22′ |
timestamp | 不固定 |
timestamp 比较特殊,如果定义一个字段的类型为 timestamp,这个字段的时间会在其他字段修改的时候自动刷新。所以这个数据类型的字段可以存放这条记录最后被修改的时间,而不是真正的存放时间。
七、数据类型的属性
在定义表时,可以指定每个字段的一些属性。
MySQL 关键字 | 含义 |
NULL | 数据列可包含 NULL 值 |
NOT NULL | 数据列不允许包含 NULL 值 |
DEFAULT xxx | 默认值,如果插入记录的时候没有指定值,将取这个默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 递增,如果插入记录的时候没有指定值,则在上一条记录的值上加 1,仅适用于整数类型 |
UNSIGNED | 无符号 |
CHARACTER SET name | 指定一个字符集 |
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-05/143936.htm
正文完
星哥玩云-微信公众号