这里中点说一下创建表时,指定默认值的问题。一般来说,创建表时,我们需要指定列的数据类型、是否NULL列。关于NULL值具体说明请看下图。
默认值要是用的好,可以省却我们很多时间。
因其经常用于指定默认日期,这里以日期为例。
首先,在MySQL中内建的日期函数
函数 | 描述 |
---|---|
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期 |
CURTIME() | 返回当前的时间 |
DATE() | 提取日期或日期/时间表达式的日期部分 |
EXTRACT() | 返回日期/时间按的单独部分 |
DATE_ADD() | 给日期添加指定的时间间隔 |
DATE_SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
创建数据库t2,插入表。如下:
CREATE DATABASE t2;
USE t2;
CREATE TABLE test
(id int(5) NOT NULL,
noedate timestamp NOT NULL DEFAULT current_timestamp()
);
调用如下:
USE t2;
INSERT INTO test(id)
values(1);
SELET * FROM test;
返回结果:
id | nowdate |
---|---|
1 | 2021-02-24 11:24:45 |
以下SQL不合法:
—time_d time NOT NULL DEFAULT CURTIME(),
—date_e date NOT NULL DEFAULT CURDATE(),
—datetime_f datetime NOT NULL DEFAULT NOW(),
DATETIME类型:NOW()函数以’YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME字段中。不支持使用系统默认值。
DATE类型:CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。不支持使用系统默认值。
TIME类型:CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。不支持使用系统默认值。
常见错误:
CREATE TABLE dnt_forums
(
aa int NOT NULL DEFAULT (‘’),
bb date NOT NULL DEFAULT (getdate()),
cc char(50) NOT NULL DEFAULT (null)
);
aa 是 int 类型,默认值也得是整型,并且default后边不要()括号 。
bb date类型不支持使用系统默认值,改成timestamp,能过now()取系统时间 。
cc 已经不允许为空(not null)所以不能默认为 null ,可以改成空字符串 。
修改:
CREATE TABLE dnt_forums(
aa int NOT NULL DEFAULT 2,
bb timestamp NOT NULL DEFAULT now(),
cc char(50) NOT NULL DEFAULT ‘’
);
重命名表:
RENAME TABLE cucopy1 TO hi;
删除表:
DROP TABLE hi;