Mysql笔记(一) 数据类型
1、整形类型
类型名称 | 存储需求 |
---|---|
tinyint | 1个字节 |
smallint | 2个字节 |
mediumint | 3个字节 |
int(integer) | 4个字节 |
bigint | 8个字节 |
create table tb{
id int(11),
name varchar(25)
}
int(11)中的11表示的是该数据类型制定的显示宽度,制定能够现实的数值中数字的个数。显示宽度和数据类型的取值范围是无关的。显示宽度只是用于显示,并不能限制取值范围和占用空间。
2、浮点数和定点数类型
类型名称 | 存储需求 |
---|---|
float | 4个字节 |
double | 8个字节 |
decimal(m,d),dec | M+2个字节 |
说明:decimal为定点类型,以字符串形式储存,在对精度比较高的时候,例如货币,使用decimal比较好。还有要避免做浮点数的比较,和运算。
3、日期和时间类型
类型名称 | 日期格式 | 存储需求 |
---|---|---|
YEAR | YYYY | 1个字节 |
TIME | HH:MM:SS | 3个字节 |
DATE | YYYY-MM-DD | 3个字节 |
DATETIME | YYYY-MM-DD HH:MM:SS | 8个字节 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 4个字节 |
说明:DTAETIME在存储日期时,按实际输入的格式存储,即输入什么就是什么,与时区无关;而TIMASTAMP存储的是一UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时在转换回当前时区。即查询时,根据当前时区的不同,现实的时间是不同的。
4、字符串类型
类型名称 | 说明 | 存储需求 |
---|---|---|
char(m) | 固定长度非二进制字符串 | M字节,1<=M<=255 |
varchar(m) | 变长非二进制字符串 | L+1字节,在此L<M和1<=M<=255 |
tinytext | 非常小的非二进制字符串 | L+1字节,在此L<2^8 |
text | 小的非二进制字符串 | L+2字节,在此L<2^16 |
mediument | 中等大小的非二进制字符串 | L+3字节,在此L<2^24 |
longtext | 打的非二进制字符串 | L+4字节,在此L<2^32 |
enum | 枚举类型,只能一个枚举字符串值 | 1或2个字节,取决于枚举值的数目 |
set | 一个设置,字符串对象可以由零个或多个set成员 | 1,2,3,4或8个字节,取决与集合成员的数量(最多84个成员) |
注意:
1、VARCHAR,BLOB和TEXT类型变长的类型
2、TEXT列保存非二进制字符串,如文章内容,评论。当保留或查询TEXT列的值时,不删除尾部的空格。
3、TINYTEXT最大长度为255字符的TEXT列
4、TEXT最大长度为65535字符的TEXT列
5、MEDUIMTEXT最大长度为16777215字符的text列
6、LONGTEXT最大长度为4294967295或4GB字符的TEXT列
5、二进制类型
类型名称 | 说明 | 存储需求 |
---|---|---|
BIT(M) | 位字段类型 | 大约(M+7)/8个字节 |
BINARY(M) | 固定长度二进制字符串 | M个字节 |
VARBINARY(M) | 可变长度二进制字符串 | M+1个字节 |
TINYBLOB(M) | 非常小的BLOB | L+1个字节,在此L<2^8 |
BLOB(M) | 小BLOB | L+2个字节,在此L<2^16 |
MEDIUMBLOB(M) | 中等大小的BLOB | L+3个字节,在此L<2^24 |
LONGBLOB(M) | 非常大的BLOB | L+4个字节,在此L<2^32 |
提示:BIN() 函数将数字转换成二进制
BLOB是一个二进制大对象,BLOB类类型分为:
- TINYBLOB
- BLOB
- MEDIUMBLOB
- LONGBLOB