数值类型:
五种整数型:tinyint、smallint、mediumint、int、bigint(都是以int结尾)。
- 对应中英文翻译:tiny(微小的)、small(小的)、medium(中等的)、big(大的)。
- 整数列可以定义为:unsigned(禁用负数),使列的取值范围从0开始(包括0)。
- unsigned用此类型还可以增加数据长度,tinyint最大值是127,那么tinyint unsigned最大就是127*2。
- 取值范围大的类型所需的存储空间较大。
unsigned 就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。
三种浮点型:float、double、decimal。
- 与整型不同,浮点类型不能是unsigned的,其取值范围与整型不同,这种不同不仅在于这些类型有最大值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说非常重要。
类型 | 说明 | 取值范围 | 占用字节 |
tinyint | 非常小的整数 | -128到127(长度:3) | 1字节 |
smallint | 较小的整数 | -32768到32767(长度:5) | 2字节 |
mediumint | 中等整数 | -8388608 到8388607(长度:7) | 3字节 |
int(m) | 标准整数 | -21亿到+21亿(长度:10) | 4字节 |
bigint(m) | 较大整数 | 922亿亿3372万亿0368亿到 922亿亿3372万亿0368亿(长度:20) | 8字节 |
float | 单精度浮点数 | 最小非零值:±1.175494351e - 38 | 4字节 |
double | 双精度浮点数 | 最小非零值:±2.2250738585072014e - 308 | 8字节 |
decimal(m,d) | 一个串浮点数 | 可变;其值的范围依赖于m 和d | m字节(mysql < 3.23),m+2字节(mysql > 3.23 ) |
字符类型:
字符串类型指:char、varchar、binary、varbinary、blob、text、enum、set。
其中常用的为:char、varchar、text。
char和varchar:
- char(n)若存入字符小于n,则以空格补其后,查询时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
- char(n)固定长度,char(4)不管是存入几个字符,都将存入4个字符(不是变长的),varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4)存入3个字符将暂用4个字节。
- char类型的字符串检索速度要比varchar类型的快。
varchar和text:
- varchar可指定n,text不能指定。
- 内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(N>255),text是实际字符数+2个字节。
- varchar可直接创建索引,text创建索引要指定前多少个字符。
- varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。
类型 | 大小 | 用途 |
char | 0-255字节 | 定长字符串 |
varchar | 0-65535字节 | 变长字符串 |
text | 0-65535字节 | 长文本数据 |
时间类型
5种表示时间值的日期和时间:datetime、date、timestamp、time、year
类型 | 大小 | 范围 | 格式 | 用途 |
date | 3字节 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3字节 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间值 |
year | 1字节 | 1907/2155 | YYYY | 年份值 |
datetime | 8字节 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期时间 |
timestamp | 4字节 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDDHHMMSS | 混合日期和时间值的时间戳 |