SQL创建具有垂直默认值的表

时间:2017-03-26 16:29:07

标签: mysql

我有一个我开始的代码,但根据我的错误,我要弄清楚我必须将默认值定义为垂直的部分。我尝试在我的书中查找它并没有提到垂直默认值,甚至没有为默认值添加值。例如,它表示email_frequency的默认值为15。我觉得这是一个简单的语法错误,但我无法在本书的任何地方找到解释如何定义默认列的信息。

我将附加预期的输出,然后附上我到目前为止编写的错误代码。

预期答案:

+-----------------+---------------------+------+-----+----------+-------+
| Field           | Type                | Null | Key | Default  | Extra |
+-----------------+---------------------+------+-----+----------+-------+
| user_id         | int(7)              | NO   |     | NULL     |       |
| email_frequency | tinyint(2) unsigned | YES  |     | 15       |       |
| layout          | varchar(70)         | YES  |     | vertical |       |
| updated_at      | datetime            | YES  |     | NULL     |       |
+-----------------+---------------------+------+-----+----------+-------+

我到目前为止的代码:

   CREATE TABLE settings (
user_id INT(7) NOT NULL,
email_frequency TINYINT(2) UNSIGNED DEFAULT 15 NULL,
layout VARCHAR(70) DEFAULT VERTICAL NULL,
updated_at YYYY-MM-DD HH:MI:SS NULL
);

错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
 corresponds to your MySQL server version for the right syntax to use near 'VER
TICAL NULL,
updated_at YYYY-MM-DD HH:MI:SS NULL
)' at line 4

1 个答案:

答案 0 :(得分:0)

这里有一些问题:

  1. "垂直"应该是字符串文字,因此需要用单引号('
  2. 表示
  3. 您在列定义
  4. 之间缺少逗号(,
  5. updated_at的数据类型应为datetime
  6. 所以:

    CREATE TABLE settings (
        user_id INT(7) NOT NULL,
        email_frequency TINYINT(2) UNSIGNED DEFAULT 15 NULL,
        layout VARCHAR(70) DEFAULT 'VERTICAL' NULL,
        updated_at DATETIME NULL
    );