目录
1、整数类型
(1)fillzero:根据整数类型的长度自动添加0
(2)unsigned:非负整数
(3)bin(m):将十进制数转为m进制
2、日期时间类型
(1)查看当前时区:show variables_name like time_zero
(2)修改时区:set time_zero ='+9:00' (修改为东八区)
(3)TIMESTAMP和DATETIME的表示方法的区别
(4)date。datetime和time
(5)关于TIMESTAMP(8.0.8)
1、TIMESTAMP基础设置
2、于时区相关的属性
限制性:1970年到2038年某一天
(3)采用不同方式将时间插入dateTime
3、字符串数据类型
(1)char和varchar的区别:
(2)binary和varbinary的区别:
(3)ENUM类型(枚举)
(4)SET类型
set和enum的区别:
1、整数类型
(1)fillzero:根据整数类型的长度自动添加0
(2)unsigned:非负整数
(3)bin(m):将十进制数转为m进制
2、日期时间类型
(1)查看当前时区:show variables_name like time_zero
(2)修改时区:set time_zero ='+9:00' (修改为东八区)
(3)TIMESTAMP和DATETIME的表示方法的区别
- TIMESTAMP的插入和查询都受当地时区的影响,更能反映出真实的日期
- TIMESTAMP支持的时间范围小
- TIMESTAMP收MYSQL的版本影响比较大(在5.6.6版本之后增加了控制参数explicit_defaults_for_timestamp(explicit_defaults_for_timestamp 系统变量决定 MySQL 服务端对timestamp列中的默认值和 NULL 值的不同处理方法。),如果设置为on,TIMESTAMP需要显式指定默认值和ON UPDATE CURRENT_TIMESTAMP属性;如果设置为off,则会自动设置默认值为CURRENT_TIMESTAMP(系统时间)和ON UPDATE_TIMESTAMP属性,并自动设置为NOT null。MYSQL8.0.2后参数默认为on,之前的版本默认为off)
- explicit_defaults_for_timestamp设置为off时,表中第一个TIMESTAMP列自动生成为系统时间。如果在TIMESTAMP列插入NULL或者插入一行不明确的不正确的TIMESTAMP,该列自动设置为当前时间的日期和时间。当插入的值超出范围,MYSQL也会认为该值溢出
(4)date。datetime和time
create table t (d date,t time,dt datetime);
insert into t values(now(),now(),now());
select * from t;
(5)关于TIMESTAMP(8.0.8)
1、TIMESTAMP基础设置
create table t1 (id1 timestamp);
DESC t1;
null=yes的情况下:
insert into t1 values(null);
select * from t1;
MYSQL 5.6以前修改current_timestamp属性需要去除限制
current_timestamp:
alter table t1 add id2 timestamp;
alter table t1 modify id2 timestamp default current_timestamp;
desc t1;
explicit_defaults_for_timestamp设置为on,则默认值、not null、on update CURRENT_TIMESTAMP()属性都不会自动设置,需要手动设置
set explicit_defaults_for_timestamp=on;
create table t2 (id timestamp);
DESC t2;
2、于时区相关的属性
CREATE TABLE t8 (
id1 timestamp NOT NULL default CURRENT_TIMESTAMP,
id2 datetime default NULL
)
查看当前时区
show variables like 'time_zone';
插入now()后
修改时间为东九区后
set time_zone='+9:00';
select * from t8;
限制性:1970年到2038年某一天
(3)采用不同方式将时间插入dateTime
create table t6(dt datetime);
insert into t6 values('2007-9-3 12:10:10');
insert into t6 values('2007/9/3 12+10+10');
insert into t6 values('20070903121010');
insert into t6 values(20070903121010);
select * from t6;
3、字符串数据类型
create table t (gender enum('M','F'));
INSERT INTO t VALUES('M'),('1'),('f'),(NULL);
select * from t;
(1)char和varchar的区别:
char不保留空格,varchar保留空格
(2)binary和varbinary的区别:
binary会填充零字节(他们包含二进制字符串,不包含非二进制字符串)
(3)ENUM类型(枚举)
create table t (gender enum('M','F'));
INSERT INTO t VALUES('M'),('1'),('f'),(NULL);
select * from t;
(4)SET类型
Create table t (col set ('a','b','c','d'))
insert into t values('a,b'),('a,d,a'),('a,b'),('a,c'),('a');
select * from t;
set和enum的区别:
set可以一次选取多个成员。enum只能选一个