创建表时出现SQL语法错误

时间:2010-09-11 17:33:13

标签: sql mysql mysql-error-1064

我最近开始学习SQL,我无法确定导致语法错误的原因(见下文):

CREATE TABLE Users(
    user_id smallint not null auto_increment,
    username varchar(50) unique,
    password varchar(41),
    dob date,
    session_id varchar not null,
    cookie varchar not null,
    PRIMARY KEY(user_id),
    CONSTRAINT dob_valid CHECK(dob < current_date())
);

当所有varchar字段都具有预定义长度时,这确实有效。 varchar类型的所有字段都需要大小参数吗?

如果这个问题看起来很简单,我很抱歉。

感谢您的提前帮助

2 个答案:

答案 0 :(得分:2)

是的,所有varchar都需要最大尺寸。

答案 1 :(得分:1)

正如the docs所说,

  

CHAR和VARCHAR类型是   声明的长度表示   您的最大字符数   想要存储。

另一种检查方法(长度为可选):在syntax上查看相关文档页面中的data_type作品(CREATE TABLE )你会看到,部分:

 VARCHAR(length)
      [CHARACTER SET charset_name] [COLLATE collation_name]

请参阅?此语法描述中方括号内的(length)部分:这意味着它是可选,但是必需(CHARACTER SET和{{1部分 是可选的,所以它们在方括号内。)

我正在解释这种阅读文档的技巧,因为,虽然学习这个非常具体的用例的具体语法当然很重要,但要学习阅读手册并找到问题的答案(语法和其他方法)以非常迅速的方式更为重要,并将极大地提高您的SQL生产力。