python之路---表的相关&数据类型

MySQL拥有不同的表类型,而表中的数据类型也有所不同

数值类型

整数类型

注意

1.为数值类型指定宽度时,限制的仅仅是查询结构的显示宽度,而不是存储宽度

几个例子

1.有符号

create table t1(n tinyint);
insert into t1 values(-129),(-128),(127),(128);

默认有符号,超过范围仍然可以存储,但是数值变为临界值

2.无符号

create table t2(n tinyint unsigned);
insert into t2 values(-129),(-128),(255),(256);
 select* from t2;

无符号最小值为0,存任何负数都变为0,最大值为255

浮点类型

float/double/decimal

日期类型

year:范围为1901-2155

alter table t2 add time year(5);
desc t2;
insert into t2(time) values(1700,1990,2156);

无论year的长度设置为多少,默认都是4,超过范围,存0000

date:范围为1000-01-01/9999-12-31

time:范围为'-838:59:59'/'838:59:59'

datetime:范围为1000-01-01 00:00:00/9999-12-31 23:59:59 

create table t1(d date,t time,dt datetime);
insert into t1 values(now(),now(),now());

timestamp:范围为1970-01-01 00:00:00/2037 年某时

create t1(t timestamp);
insert into t1 values();
insert into t1 values(null);

小结

1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。

2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。

3.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。

4.DATETIME的默认值为null;TIMESTAMP的字段默认不为空,默认值为当前时间,如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。

推荐使用timestamp

字符串类型

小结

枚举类型与集合类型

enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

猜你喜欢

转载自blog.csdn.net/ltfdsy/article/details/82533873