1、前言
在现实世界中, 数据的种类有很多,
比如, 人的姓名(字符), 人的年龄(整型), 人的身高(小数), 出生日期(日期)
而MySQL就是用来保存这些数据的, 所以在 MySQL中, 将数据分为三大类:
- 数值型
- 字符串
- 日期与时间
1.数值—整型
| 类型 | 名称 | 说明 | 无符号范围 | 有符号范围 |
|---|---|---|---|---|
| 整型 | tinyint | 微整型, 占8位二进制 | 0~255 | -127~128 |
| smallint | 小整型, 占16位二进制 | 0~65535(6万) | -32767~32768 | |
| int | 整型 | 0~42亿 | ||
| bigint | 大整型 | 0~200亿亿 |
选型
一个人的年龄age: tinyint
大学一个学校的学生序号student_num: int
大型电商网站的商品表的序号goods_num: int
马云的资产mayun: bigint
说明
在mysql中, 默认的整型是带符号的, 如果要定义无符号整型, 需要加上unsigned
示例
CREATE TABLE user (
age tinyint unsigned,
student_num smallint unsigned,
goods_num int unsigned,
mayun bigint
);
2、数值—小数
小数分为
- 浮点
- 单精度
- 双精度
- 定点
浮点型的数据不精确, 所以一般表示价格, 我们使用定点型
| 类型 | 名称 | 说明 |
|---|---|---|
| 小数 | float(m,d) | m(精度), 表示总位数, d(标度), 表示小数点后的位数 |
| double(m,d) | m(精度), 表示总位数, d(标度), 表示小数点后的位数 | |
| decimal(m,d) | m(精度), 表示总位数, d(标度), 表示小数点后的位数 |
选型
距离: 3.4 km float(10,2)
人的体重: 80.5kg float(5,2)
价格: 9.9 RMB decimal(10,2)
示例
CREATE TABLE t_float (
distance float(10,2),
weight float(5,2),
price decimal(10,2)
);
3、字符串
| 类型 | 名称 | 说明 |
|---|---|---|
| 字符型 | char(M)定长 | 无论使用几个字符都占满全部, 范围0~255字符 |
| varchar(M)变长 | 使用几个字符就占用几个, 理论范围0~65535字符 | |
| text | 允许长度 0~65535 字节 | |
| enum(集合) | 枚举, 集合表示选项, 以逗号隔开 |
| text类型 | tinytext | 1kb |
|---|---|---|
| text | 64kb | |
| mediumtext | 16MB | |
| longtext | 4GB |
选型
char类型: 固定长度, 一般用于存储固定长度的字符串, 如
- 手机号 char(11)
- 通过md5加密后的密码值char(32)
varchar类型: 可变长度, 存储长度不确定的字符字符串, 如
- 姓名 varchar(16)
- 邮箱 varchar(255)
text类型: 存储大段内容, 如
- 文章内容 text
enum类型: 单选, 如
- 性别
说明
char与varchar的区别
- char是固定的长度 char(5) 保存 abc, 实际占用的空间5个
- varchar最大长度 varchar(5)保存abc, 实际占用的空间3个
varchar用多少就占多少
示例
char(11) //表示不能超过11位
CREATE TABLE t_char (
phone char(11),
password char(32),
name varchar(16),
email varchar(255),
content text,
sex enum(‘男’,’女’)
);
说明
char(M)与varchar(M)中的M表示的字符数
4、日期与时间
| 类型 | 名称 | 说明 |
|---|---|---|
| 日期 | date | 范围1000-01-01~9999-12-31 |
| datetime | 范围1000-01-01 00:00:00~9999-12-31 23:59:59 | |
| timestamp | 从1970年开始至今的秒数 |
选型
出生日期: date
商品抢购的开始结束时间: datetime
文章的创建更新时间: timestamp(时间戳)
说明
时间戳: 从1970年1月1日0时0分0秒到当前时间的秒数(整数)
一般时间类型更常见的是保存时间戳, 时间戳就是一个整型数, 为什么保存时间戳呢?
- 效率更高
- 方便处理
示例
CREATE TABLE t_time (
birthday date,
start_time datetime,
end_time datetime,
created_time timestamp
);
