一、数据类型

一、类型属性

1.1 UNSIGNED

mysql> create table t(
    -> a int unsigned,
    -> b int unsigned
    -> )Engine = InnoDb;
Query OK, 0 rows affected (0.37 sec)

mysql> insert into t values(1,2);
Query OK, 1 row affected (0.03 sec)

mysql> select a - b from t;
ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(`test`.`t`.`a` -
`test`.`t`.`b`)'

在MySQL数据库中,对于UNSINGNED的操作,返回都是UNSINGNED。因此会返回错误

1.2 ZEROFILL:设定列的宽度,如果宽度小于设定的宽度,则自动填充0

mysql> alter table t change column a a int(4) unsigned zerofill;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from t;
+------+------+
| a    | b    |
+------+------+
| 0001 |    2 |
+------+------+
1 row in set (0.00 sec)

二、日期和时间类型

日期类型

2.1 TIMESTAMP

datetime与timestamp显示的时候都是标准的"yyyy-MM-dd HH:MMSS"格式。但是有如下的不同。
建表时,timestamp可以设定一个默认值,而datetime不行;
在更新表时,可以设置timestamp类型的列自动更新为当前时间。

mysql> create table t3(
    -> a int,
    -> b timestamp default current_timestamp on update current_timestamp
    -> )engine = InnoDB;
Query OK, 0 rows affected (0.22 sec)

mysql> insert into t3(a) values(1);
Query OK, 1 row affected (0.04 sec)

mysql> select * from t3;
+------+---------------------+
| a    | b                   |
+------+---------------------+
|    1 | 2018-06-19 10:33:58 |
+------+---------------------+
1 row in set (0.00 sec)

2.2 与日期和时间相关的函数

1、返回当前时间

mysql> select now(),current_timestamp(),sysdate()\G;
*************************** 1. row ***************************
              now(): 2018-06-19 10:38:02
current_timestamp(): 2018-06-19 10:38:02
          sysdate(): 2018-06-19 10:38:02
1 row in set (0.01 sec)

2、时间加减函数

DATE_ADD(date,INTERVAL expr unit) -- 增加时间
DATE_SUB(date,INTERVAL expr unit) -- 减少时间

mysql> select now() as now,
    -> DATE_ADD(now(),INTERVAL 1 DAY) as tomorrow,
    -> DATE_SUB(now(),INTERVAL 1 DAY) as yesterday\G;
*************************** 1. row ***************************
      now: 2018-06-19 10:43:24
 tomorrow: 2018-06-20 10:43:24
yesterday: 2018-06-18 10:43:24
1 row in set (0.02 sec)

上面的例子中使用了DAY,还可以用其他的时间单位,例如MICROSECOND,SECOND,MINUTE,HOUR,WEEK,MONTH等类型
2、DATE_FORMAT函数:

mysql> select DATE_FORMAT(now(),'%Y%m%d') as datetime\G;
*************************** 1. row ***************************
datetime: 20180619
1 row in set (0.00 sec)

三、数字类型

整型

你可能感兴趣的:(一、数据类型)