1128729-20170509122410019-1791188200.png这里中点说一下创建表时,指定默认值的问题。一般来说,创建表时,我们需要指定列的数据类型、是否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;