第26节--数据类型介绍
数据类型介绍
一、整型
数据类型 | 字节 | 存储范围 |
Tinyint | 1 |
有符号值:-128~127() 无符号值:0~255 |
Smallint | 2 |
有符号值:-32768~32767 无符号值:0~65535 |
Mediumint | 3 |
有符号值:-8388608~8388607 无符号值:0~1677215 |
int,integer | 4 |
有符号值:-2147483648~2147483647 无符号值:0~4294967295 |
Bigint | 8 |
有符号值:-9223372036854775808~9223372036854775807 无符号值:0~9223372036854775807*2+1 |
例:int(7)中7表示显示结果的宽度,入不够该宽度,若搭配zerofill,左边将用0填充
二、小数
浮点型
类型 | 字节 |
float(M,D) | 4 |
double(M,D) | 8 |
定点数类型
DEC(M,D) M+2字节,最大取值范围与double相同,给定的decimal的有效取值范围由M和D决定。
特点:①M和D;M 代表整数部位+小数部位的总长度,D代表小数部位的总长度,如果超过范围,则插入 临界值
②M和D都可以省略,如果demical,则默认为10,D默认为0;如果是float和double,则会根据插入的数值精度来决定精度
③定点型的精确度较高,如果要插入数值的精确度较高,如货币运算等,则考虑使用
#原则:所选的类型越简单越好,能保存数值的类型越小越好(节省空间)
三、字符型
1. 较短的文本:char,varchar
2. 较长的文本:text,blob(较大的二进制)
数据类型 | 最多字符数 | 描述及存储需求 | 代表长度 | 效率 |
char(M) | M, 可以省略,默认为1 | M为0~255之间的整数 | char代表固定长度的字符 | char比较耗费空间,效率比较高 |
varchar(M) | M, 不可以省略 | M为0~65535之间的整数 | varchar代表可变长度的字符 | varcahr比较节省,效率比较低 |
M代表字符数(一个字母是一个字符,一个汉字是一个字符)
3. binary和varbinary类型(了解)
用于保存较短的二进制
说明:类似于char和varchar,不同的是他们包含二进制字符串而不包含非二进制字符串。
4. Enum类型(了解)用于保存枚举
又称枚举类型,要求插入的值必须属于列表中指定的值之一
如果列表成员为1~255,则需要一个字节存储
如果列表成员为255~65535,则需要2个字节存储,最多需要65535个成员
例:create table tab_char(
C1 Enum('a','b','c')
);
插入表中的值,必须属于‘a’ ,b,c中任意一个才有效。
5.set类型(了解)用于保存集合
和Enum类似,里面可以保存0~64个成员;和Enum最大的区别是:set 类型一次可以选取多个成员,而Enum只能选一个,根据成员个数的不同,存储所占的字节也不同
成员数 | 字节数 |
1-8 | 1 |
9-16 | 2 |
17-24 | 3 |
25-32 | 4 |
33-64 | 8 |
例:create table tab_set(
S1 set('a','b','c','d')
);
insert into tab_set values('a');
insert into tab_set values('a, b');
insert into tab_set values('a,b,c');
显示结果
S1 |
a |
a,b |
a,b,c |
四、日期型
日期和时间类型 | 字节 | 最小值 | 最大值 |
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
timestamp | 4 | 19700101080001 | 2038年的某个时刻 |
time | 3 | -838::59:59 | 838::59:59 |
year | 1 | 1901 | 2155 |
1. timestamp支持的时间范围较小,取值范围:19700101080001~2038年的某个时间
datetime的取值范围:1000-1-1~9999-12-31
2. timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
3. timestamp 的属性受mysql版本和sqlmode的影响很大
create table tab_time(
t1 datetime,
t2 timestamp
);
总结:
date 只保存日期
time 只保存时间
year 只保存年
datetime 保存日期+时间
timestamp 保存日期+时间
特点:
数据类型 | 字节 | 范围 | 时区等的影响 |
datetime | 8 | 1000-9999 | 不受 |
timestamp | 4 | 1970-2038 | 受 |