什么是默认值
在数据库中,每个列都有一个默认值,当插入一行时如果某个指定列的值没有提供,则该列的默认值就会被添加到插入的行中,如果该列没有默认值,则该列就会被设置为null。默认值既可以是常量值,也可以是表达式。
日期默认值
在数据库中,我们经常会使用日期类型的列来记录某个时间或者时间段的信息,例如用户注册时间,订单创建时间等等。在这些列中设置一个默认值,可以让我们更加方便地进行数据的管理。
对于日期类型的列,不同数据库有不同的默认值设置方法,例如在MySQL数据库中,通过以下代码可以为日期类型的列设置一个默认值。
ALTER TABLE t ADD COLUMN date_col DATE DEFAULT '1970-01-01';
此时,如果不指定date_col的值,则系统将会自动将date_col的值设置为1970-01-01。
将日期显示为表中的默认值
MySQL数据库中日期默认值的显示
在MySQL数据库中,如果我们通过查询表结构的方式来查看该表的默认值信息,则可以使用以下代码:
SHOW CREATE TABLE t;
我们可以看到结果中包含了我们为表中列设置的默认值信息:
CREATE TABLE `t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`date_col` date DEFAULT '1970-01-01',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
但是,在表中查询数据时,如果该列的值为默认值,则该列的值将不会被显示出来,例如:
INSERT INTO t(name) VALUES('test');
SELECT * FROM t;
查询结果如下:
+----+------+------------+
| id | name | date_col |
+----+------+------------+
| 1 | test | 1970-01-01 |
+----+------+------------+
我们可以发现,由于date_col列的值为默认值,所以在查询结果中并没有显示出来。
Oracle数据库中日期默认值的显示
在Oracle数据库中,我们可以使用以下语句为日期类型的列设置默认值:
ALTER TABLE t MODIFY date_col DATE DEFAULT SYSDATE;
其中,SYSDATE是Oracle数据库中获取当前时间的函数。
如果我们需要查询表中默认值的信息,可以通过以下语句实现:
SELECT COLUMN_NAME, DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T';
查询结果如下:
COLUMN_NAME | DATA_DEFAULT
id | null
name | null
date_col | SYSDATE
在Oracle数据库中,与MySQL数据库不同的是,在查询表数据时,日期类型的列的默认值是会显示出来的:
INSERT INTO t(name) VALUES('test');
SELECT * FROM t;
查询结果如下:
ID | NAME | DATE_COL
1 | test | 29-JUL-21
我们可以发现,由于date_col列的默认值是SYSDATE,所以在查询结果中显示了当前时间。
总结
本文主要介绍了在MySQL和Oracle数据库中如何设置日期类型列的默认值,并且解释了在两种数据库中默认值显示的差异性。在实际开发中,合理利用默认值可以提高数据维护的效率,减少人为错误。