2、MySQL支持的数据类型

目录

 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的表示方法的区别

  1. TIMESTAMP的插入和查询都受当地时区的影响,更能反映出真实的日期
  2. TIMESTAMP支持的时间范围小
  3. 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)
  4. 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只能选一个

猜你喜欢

转载自blog.csdn.net/weixin_62190821/article/details/128447762
今日推荐