MySQL中的列类型
- 1.数值型
- 2.字符串列类型
- 3. enum:枚举类型,列可赋予某个枚举成员
- 4. set:集合类型,列可赋予多个集合成员
- 5.日期和时间列类型
- 6.布尔bit
- 总结:
1.数值型
数值列类型
类型名 | 说明 |
tinyint(小整型) | 1B,非常小的整数,取值范围[-128,127] |
smallint(微整型) | 2B,较小的整数,取值范围[-32768,32767] |
mediumint | 3B,中等大小的整数,取值范围[-8388608,8388607] |
int | 4B,标准整数,取值范围 2147483647 |
bigint | 8B,大整数,取值范围9223372036854775807 |
float | 4B,单精度浮点数,取值范围3.4E+38 |
double | 8B,双精度浮点数,取值范围1.79E+308 |
decimal/numeric(实际上是用字符串存放) | 定点的浮点数,依赖于M和D值 |
create table t3(
id bigint primary key auto_increment, //对应java中的long/Long类型
age int, //对应的java中的int/Integer类型
salary decimal(总位宽,小数位数)//另外名称numeric,一般要求总位宽>=小数位数
);
Int和numeric
- int类型不能保存小数位
- numeric可以保存小数位。如numeric(4,2)则可以表示最大数据为:99.99。注意4是总位数,2是小数位数
2.字符串列类型
类型名 | 参数 | 说明 |
char | 0-255 | 定长字符串,默认长度为1 |
varchar | 0-65535 | 可变长字符串 |
tinyblob | 0-255 | 不超过255个字符的二进制字符串 |
tinytext | 0-255 | 短文本字符串 |
blob (大对象型) | 0-65535 | 二进制形式的长文本数据 |
text(文本大对象型) | 0-65535 | 长文本字符串 |
mediumblob | 16M | 二进制的中等长度文本数据 |
mediumtext | 16M | 中等长度文本数据 |
longblob | 4G | 二进制形式的极大文本数据 |
longtext | 4G | 极大文本数据 |
char与varchar的区别
- char(n)定长字符串,当插入数据时,如果长度不足,自动添加空格凑够指定的长度
- varchar(n)变长字符串,当插入数据长度不足时,实际有多少个字符则插入多少个字符,不会添加空格进行处理
- 定长串支持快速定位,查询定位效率高;变长串节约空间,但是定位效率低
大对象类型
- BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
- 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求
- TINYTEXT可变长度最多 255 个字符;TEXT可变长度最多 65535 个字符;MEDIUMTEXT可变长度最多 16M个字符;LONGTEXT可变长度,最多4G个字符
3. enum:枚举类型,列可赋予某个枚举成员
4. set:集合类型,列可赋予多个集合成员
5.日期和时间列类型
类型名 | 说明 | |
date | 1000-9999年,日期 | 3B,yyyy-MM-dd |
time | -838到838小时,时间值或者持续时间 | 3B,HH:mm:ss |
year | 1901-2155年份值 | 1B,yyyy |
datetime | 1000-9999年,日期时间值 | 8B,yyyy-MM-dd HH:mm:ss |
timestamp | 1970-2038年,时间戳,精确到秒 | 4B,yyyyMMddhhmmss |
6.布尔bit
bit 表示1个二进制的位
bit(8) 表示8个二进制的位
使用的boolean实际可以理解为bit的别名,实际上是tinyint类型
总结:
- 定义数据类型就是定义列,数据类型决定数据的特性
- 数据类型主要分为字符串类型,浮点书类型和定点数类型,日期类型以及二进制类型
- 数据类型在不同的存储引擎上表现不同
- 根据所采用的数据类型,需求和数据特性选择数据类型