我最近开始学习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类型的所有字段都需要大小参数吗?
如果这个问题看起来很简单,我很抱歉。
感谢您的提前帮助
答案 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生产力。