MySQL表的数据类型
数值类型
- 整型
- tinyint、samllint、mediumint、int、bigint
- 无符号添加unsigned。e.g.:
int unsigned
- tinyint: 1字节
- int: 4字节
- 显示宽度:int(5) 数据显示宽度为5
- 添加前导零:zerofill。
e.g.: int(5) zerofill
- 浮点型
- float、double
- float: 4字节
- double:8字节
- float(5,2) 5位长度,2位小数, 2位整数
- double(4,1) 4位长度,1位小数,3位整数
- 小数超出,会四舍五入。整数位超出会报错。e.g.: 1.235会变成1.24,在float(5,2)
- 浮点数存在精度丢失
- 定点数
- decimal整数和小数分开存储
- decimal(总位数,小数位)
- 不会存在精度丢失问题,可以存无限大的数
字符、文本
- 字符型
- char(字符数)、varchar(字符数)
- char定长,最大255字节,不回收多余字节。根据不同的编码得到不同的最大字符数。
- varchar变长,最大65535字节,回收多余字节。根据不同的编码得到不同的最大字符数。
- 创建一张表,一条记录的总长度不允许超过65535字节。
- 大段文本
- tinytext、text、mediumtext、longtext
- text类型使用的是地址值
枚举、集合
- 枚举类型
- enum使用数字保存在数据库中
- e.g.:
enum('男','女','未知')
- 插入:
insert into t0 values(1);
- 插入:
insert into t0 values('男');
- 优点:运行速度快
- 优点:限制插入数据,保证数据完整性
- 优点:节省空间
- 集合类型
- set无序
- 用法:
create table t1(habit set('骑车','开车','开飞机'));
- 枚举的技术从2^0开始,每个列举较前一个乘以2
- 优点:运行速度快
- 优点:限制插入数据,保证数据完整性
- 优点:节省空间
日期、Boolean
- 日期类型
- datatime
- 用法:
create table t2(time datetime);
- 插入:
insert into t2 values('2019-4-12 11:57:32');
- date
- 用法:
create table t3(t date);
- 插入:
insert into t3 values('2019-4-12');
- timestamp
- 从1970年1月1日0点起计
- 用法:
create table t4(t timestamp);
- 插入:
insert into t4 values('2019-4-12 11:57:32');
- time
- 时分秒,时可以超过24小时,表示天的间隔
- 用法:
create table t5(t time);
- 插入:
insert into t5 values('11:57:32');
- Boolean类型
- 不支持,可使用0和1表示