2020年4月27日
8:22
1、整型
类型: |
字节大小 |
数值范围 |
Tinyint |
1 |
有符号:-128~127 无符号: 0~255 |
smallint |
2 |
有符号:-32768~32767 无符号:0~65535 |
mediumint |
3 |
有符号:-8388608~8388607 无符号:0~16777215 |
Int,integer |
4 |
有符号:-2,147,483,648~2,147,483,647 无符号:0~4294967295 |
Bigint |
8 |
有符号:-9223372036854775808~9223372036854775807 无符号:18446744073709551615 |
特点:
- 如果不设置无符号还是有符号,默认有符号,如果添加unsigned 添加关键字 就是无符号。
- 如果插入的数值超过了整形范围,会报出out of range 异常,并插入临界值
- 如果不设置长度,会使用默认长度
- 如果在长度设置的情况下,可以使用zerofill填充0用以完成字节长度填充。
案例:
create table tables_int( id int(7),ids int(7) unsigned);
create table word(id mediumint zerofill,number tinyint zerofill);
2、小数类型
类型(浮点) |
字节大小 |
数值范围 |
float |
4 |
有符号:-3.402823466E+38 ~-1.175494351E-38 无符号:0~1.175494351E-38、0~3.402823466E+38 |
double |
8 |
有符号:-1.797693 134 862 3157E+308~2.2250738555072014E-308 无符号:0~2.2250738555072014E-308,0~1.797693 134 862 3157E+308 |
类型(定点) |
字节大小 |
数值范围 |
Decimal(M,D) |
m+2 |
有符号:-1.797693 134 862 3157E+308~2.2250738555072014E-308 无符号:0~2.2250738555072014E-308,0~1.797693 134 862 3157E+308 |
特点:
1、规定范围的小数:
M:整数部分+小数部分
D:小数部分
2、省略MD:
如果是decimal那将会为10
如果是float 或者 double 将会由输入的数字的精度来决定
案例:
create table table_float(f1 float,f2 double,f3 decimal);
create table table_float(f1 float(4,3),f2 double(4,3),f3 decimal(6,3));
3、字符型
类型 |
写法 |
字节长度 |
空间消耗 |
效率 |
char |
Char(M) |
字节长度固定 |
高 |
高 |
varchar |
Varchar(M) |
字节长度不固定 |
低 |
低 |
特点:
char字节长度固定,不随插入的数值变动,例如char(10),插入数据"中国",其字符大小仍为10
varchar字节长度不固定,随插入的数值变动,例如char(10),插入数据"中国",其字符大小为2
4、枚举类型
类型 |
数值范围 |
索引 |
Enum(M1,M2,M3….) |
0~65535 |
从1开始 |
案例:
create table table_enum(id int,sex enum("男","女"));
insert into table_enum values(1,"男");
insert into table_enum values(2,1);
insert into table_enum values(3,2);
5、集合类型
案例:
create table table_set(id int,sex set("a","b","c","d"));
insert into table_set values("1","a,b,c");
6、时间类型
类型 |
字节 |
最小值 |
最大值 |
date |
4 |
1000-1-1 |
9999-12-31 |
Datetime |
8 |
1000-1-1 00:00:00 |
9999-12-31 23:59:59 |
timestamp |
4 |
1970010108001 |
2038年某个时刻 |
time |
3 |
-838:59:59 |
838:59:59 |
year |
1 |
1901 |
2155 |
特点:
Datatime 与timestamp 区别点在于datatime忽略时区的影响,timestamp可以更能反应本地时间。当时区改变时timestamp能自动根据当前时区调整数据。
案例:
create table table_time(id int,time datetime,time2 timestamp);
insert into table_time values(1,now(),now());